{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "BiKkPaSYZKnF"
   },
   "source": [
    "# Burgers Optimization with a Differentiable Physics Gradient\n",
    "\n",
    "To illustrate the process of computing gradients in a _differentiable physics_ (DP) setting, we target the same inverse problem (the reconstruction task) used for the PINN example  in {doc}`physicalloss-code`. The choice of DP as a method has some immediate implications: we start with a discretized PDE, and the evolution of the  system is now fully determined by the resulting numerical solver. Hence, the only real unknown is the initial state. We will still need to re-compute all the states between the initial and target state many times, just now we won't need an NN for this step. Instead, we rely on the discretization of the model equations. \n",
    "\n",
    "Also, as we choose an initial discretization for the DP approach, the unknown initial state consists of the sampling points of the involved physical fields, and we can simply represent these unknowns as floating point variables. Hence, even for the initial state we do not need to set up an NN. Thus, our Burgers reconstruction problem reduces to a gradient-based optimization without any NN when solving it with DP. Nonetheless, it's a very good starting point to illustrate the process.\n",
    "\n",
    "First, we'll set up our discretized simulation. Here we employ phiflow, as shown in the overview section on _Burgers forward simulations_. \n",
    "[[run in colab]](https://colab.research.google.com/github/tum-pbs/pbdl-book/blob/main/diffphys-code-burgers.ipynb)\n",
    "\n",
    "\n",
    "## Initialization\n",
    "\n",
    "phiflow directly gives us a sequence of differentiable operations, provided that we don't use the _numpy_ backend.\n",
    "The important step here is to include `phi.tf.flow` instad of `phi.flow` (for _pytorch_ you could use `phi.torch.flow`).\n",
    "\n",
    "So, as a first step, let's set up some constants, and initialize a `velocity` field with zeros, and our constraint at $t=0.5$ (step 16), now as a `CenteredGrid` in phiflow. Both are using periodic boundary conditions (via `extrapolation.PERIODIC`) and a spatial discretization of $\\Delta x = 1/128$.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "id": "W69db7SUZKnI"
   },
   "outputs": [],
   "source": [
    "!pip install --upgrade --quiet phiflow==3.1\n",
    "from phi.tf.flow import *\n",
    "\n",
    "N = 128\n",
    "DX = 2/N\n",
    "STEPS = 32\n",
    "DT = 1/STEPS\n",
    "NU = 0.01/(N*np.pi)\n",
    "\n",
    "# allocate velocity grid\n",
    "velocity = CenteredGrid(0, extrapolation.PERIODIC, x=N, bounds=Box(x=(-1,1)))\n",
    "\n",
    "# and a grid with the reference solution \n",
    "REFERENCE_DATA = math.tensor([0.008612174447657694, 0.02584669669548606, 0.043136357266407785, 0.060491074685516746, 0.07793926183951633, 0.0954779141740818, 0.11311894389663882, 0.1308497114054023, 0.14867023658641343, 0.1665634396808965, 0.18452263429574314, 0.20253084411376132, 0.22057828799835133, 0.23865132431365316, 0.25673879161339097, 0.27483167307082423, 0.2929182325574904, 0.3109944766354339, 0.3290477753208284, 0.34707880794585116, 0.36507311960102307, 0.38303584302507954, 0.40094962955534186, 0.4188235294008765, 0.4366357052408043, 0.45439856841363885, 0.4720845505219581, 0.4897081943759776, 0.5072391070000235, 0.5247011051514834, 0.542067187709797, 0.5593576751669057, 0.5765465453632126, 0.5936507311857876, 0.6106452944663003, 0.6275435911624945, 0.6443221318186165, 0.6609900633731869, 0.67752574922899, 0.6939334022562877, 0.7101938106059631, 0.7263049537163667, 0.7422506131457406, 0.7580207366534812, 0.7736033721649875, 0.7889776974379873, 0.8041371279965555, 0.8190465276590387, 0.8337064887158392, 0.8480617965162781, 0.8621229412131242, 0.8758057344502199, 0.8891341984763013, 0.9019806505391214, 0.9143881632159129, 0.9261597966464793, 0.9373647624856912, 0.9476871303793314, 0.9572273019669029, 0.9654367940878237, 0.9724097482283165, 0.9767381835635638, 0.9669484658390122, 0.659083299684951, -0.659083180712816, -0.9669485121167052, -0.9767382069792288, -0.9724097635533602, -0.9654367970450167, -0.9572273263645859, -0.9476871280825523, -0.9373647681120841, -0.9261598056102645, -0.9143881718456056, -0.9019807055316369, -0.8891341634240081, -0.8758057205293912, -0.8621229450911845, -0.8480618138204272, -0.833706571569058, -0.8190466131476127, -0.8041372124868691, -0.7889777195422356, -0.7736033858767385, -0.758020740007683, -0.7422507481169578, -0.7263049162371344, -0.7101938950789042, -0.6939334061553678, -0.677525822052029, -0.6609901538934517, -0.6443222327338847, -0.6275436932970322, -0.6106454472814152, -0.5936507836778451, -0.5765466491708988, -0.5593578078967361, -0.5420672759411125, -0.5247011730988912, -0.5072391580614087, -0.4897082914472909, -0.47208460952428394, -0.4543985995006753, -0.4366355580500639, -0.41882350871539187, -0.40094955631843376, -0.38303594105786365, -0.36507302109186685, -0.3470786936847069, -0.3290476440540586, -0.31099441589505206, -0.2929180880304103, -0.27483158663081614, -0.2567388003912687, -0.2386513127155433, -0.22057831776499126, -0.20253089403524566, -0.18452269630486776, -0.1665634500729787, -0.14867027528284874, -0.13084990929476334, -0.1131191325854089, -0.09547794429803691, -0.07793928430794522, -0.06049114408297565, -0.0431364527809777, -0.025846763281087953, -0.00861212501518312] , math.spatial('x'))\n",
    "SOLUTION_T16 = CenteredGrid( REFERENCE_DATA, extrapolation.PERIODIC, x=N, bounds=Box(x=(-1,1)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "lewJYuRzZKnL"
   },
   "source": [
    "Below we verify that the fields of our simulation are now backed by TensorFlow."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "id": "5u03jWPfZKnM",
    "outputId": "6606726e-3498-4419-da44-021f8e30adda"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensorflow.python.framework.ops.EagerTensor"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(velocity.values.native())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "FBoE0HsOZKnN"
   },
   "source": [
    "## Gradients\n",
    "\n",
    "The `math.gradient` operation of phiflow generates a gradient function for a scalar loss, and we use it below to compute gradients of a whole simulation with the chosen number of 32 time steps.\n",
    "\n",
    "To use it for the Burgers case we need to compute an appropriate loss: we want the solution at $t=0.5$ to match the reference data. Thus we simply compute an $L^2$ difference between step number 16 and our constraint array as `loss`. Afterwards, we evaluate the gradient function of the initial velocity state `velocity` with respect to this loss. Phiflow's `math.gradient` generates a function that returns a gradient for each parameter, and as we only have a single one in form of the velocity here, `grad[0]` represents the gradient for the initial velocity."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "id": "WjRnOIihZKnO",
    "outputId": "5851883a-1635-48a9-bb7f-1d254c2983af"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loss: 0.382915\n"
     ]
    }
   ],
   "source": [
    "def loss_function(velocity):\n",
    "    velocities = [velocity]\n",
    "    for time_step in range(STEPS):\n",
    "        v1 = diffuse.explicit(1.0*velocities[-1], NU, DT, substeps=1)\n",
    "        v2 = advect.semi_lagrangian(v1, v1, DT)\n",
    "        velocities.append(v2)\n",
    "    loss = field.l2_loss(velocities[16] - SOLUTION_T16)*2./N # MSE\n",
    "    return loss, velocities\n",
    "\n",
    "gradient_function = math.gradient(loss_function)\n",
    "\n",
    "(loss,velocities), grad = gradient_function(velocity)\n",
    "\n",
    "print('Loss: %f' % (loss))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "n7PQQAP6ZKnP"
   },
   "source": [
    "Because we're only constraining time step 16, we could actually omit steps 17 to 31 in this setup. They don't have any degrees of freedom and are not constrained in any way. However, for fairness regarding a comparison with the previous case, we include them.\n",
    "\n",
    "Note that we've done a lot of calculations here: first the 32 steps of our simulation, and then another 16 steps backwards from the loss. They were recorded by the gradient tape, and used to backpropagate the loss to the initial state of the simulation.\n",
    "\n",
    "Not surprisingly, because we're starting from zero, there's also a significant initial error of ca. 0.38 for the 16th simulation step.\n",
    "\n",
    "So what do we get as a gradient here? It has the same dimensions as the velocity, and we can easily visualize it:\n",
    "Starting from the zero state for `velocity` (shown in blue), the first gradient is shown as a green line below. If you compare it with the solution it points in the opposite direction, as expected. The solution is much larger in magnitude, so we omit it here (see the next graph).\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "id": "ujFnJy0eZKnQ",
    "outputId": "fd89f5c8-c34b-4f0b-a5e4-82443d831f75"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pylab as plt\n",
    "\n",
    "fig = plt.figure().gca()\n",
    "pltx = np.linspace(-1,1,N)\n",
    "\n",
    "# first gradient\n",
    "fig.plot(pltx, grad[0].values.numpy('x')           , lw=2, color='green',      label=\"Gradient\")  \n",
    "fig.plot(pltx, velocity.values.numpy('x'), lw=2, color='mediumblue', label=\"u at t=0\")\n",
    "plt.xlabel('x'); plt.ylabel('u'); plt.legend();\n",
    "\n",
    "# some (optional) other fields to plot:\n",
    "# fig.plot(pltx,  (velocities[16]).values.numpy('x')   , lw=2, color='cyan', label=\"u at t=0.5\")  \n",
    "# fig.plot(pltx,  (SOLUTION_T16).values.numpy('x')   , lw=2, color='red', label=\"solution at t=0.5\")  \n",
    "# fig.plot(pltx,  (velocities[16] - SOLUTION_T16).values.numpy('x')   , lw=2, color='blue', label=\"difference at t=0.5\")  \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "pEsbDiF4ZKnT"
   },
   "source": [
    "This gives us a \"search direction\" for each velocity variable. Based on a linear approximation, the gradient tells us how to change each of them to increase the loss function (gradients _always_ point \"upwards\"). Thus, we can use the gradient to run an optimization and find an initial state `velocity` that minimizes our loss.\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "m8fc8eMeZKnU"
   },
   "source": [
    "## Optimization \n",
    "\n",
    "Equipped with the gradient we now run a gradient descent optimization. Below, we're using a learning rate of `LR=5`, and we're re-evaluating the loss for the updated state to track convergence. \n",
    "\n",
    "In the following code block, we're additionally saving the gradients in a list called `grads`, such that we can visualize them later on. For a regular optimization we could of course discard the gradient after performing an update of the velocity.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "id": "fGVc9zQcZKnV",
    "outputId": "b27673a4-1b17-4ba7-a707-523248fb8bf0"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Optimization step 0, loss: 0.382915\n",
      "Optimization step 1, loss: 0.326882\n",
      "Optimization step 2, loss: 0.281032\n",
      "Optimization step 3, loss: 0.242804\n",
      "Optimization step 4, loss: 0.210666\n"
     ]
    }
   ],
   "source": [
    "LR = 5.\n",
    "\n",
    "grads=[]\n",
    "for optim_step in range(5):\n",
    "    (loss,velocities), grad = gradient_function(velocity)\n",
    "    print('Optimization step %d, loss: %f' % (optim_step,loss))\n",
    "    grads.append( grad[0] )\n",
    "\n",
    "    velocity = velocity - LR * grads[-1]\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "pXTveI7uZKnW"
   },
   "source": [
    "\n",
    "Now we'll check well the 16th state of the simulation actually matches the target after the 5 update steps. This is what the loss measures, after all. The next graph shows the constraints (i.e. the solution we'd like to obtain) in green, and the reconstructed state after the initial state `velocity` (which we updated five times via the gradient by now) was updated 16 times by the solver. \n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "id": "ce-MV-4eZKnX",
    "outputId": "1ec5844e-2915-4656-dec3-585260fdfa5c"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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Oxk3ApctW5YRI0bQokULLrvsMn799Ve6d+9OgwYNmD59OpD9V3zfvn2ZN29etmNee+21tG3blhYtWjBlyhQARo4cmTmo46233grA+++/T4cOHWjdujV33303aWlpALzzzjs0btyYDh06sGDBgmz7T09Pp169ehw9ejRzWaNGjdi/fz+xsbFcf/31tG/fnvbt2+e4/bZt27j00ktp1aoVPXr0YMcO58KP/fv385e//IWYmBhiYmIyE0fGUPIjR45k/vz5tG7dmgkTJtC1a9dTxhK7+OKLcxwOJl9UtdQ82rZtq6Zk23din977xb3aYFwDbTCugV7//vW6IXaD12FlE5cUpw3GNdDmE5p7Hcop1q5dm/kclhXJ43ROnDihMTEx2qhRI7333nt13rx5meu6deumS5YscWNDZ86cqaqq1157rfbs2VOTk5N1xYoVGhMTo6qq77zzjt53332Z2/fp00fnzp2rqqp169bV2NhYVVU9dOiQqqrGx8drixYt9ODBg6qqWqZMmVPOS9++fTU5OVlVVe+991599913dc+ePVq7dm09cOCAJiUlaefOnU85ZoYhQ4bo1KlTVVV18eLF2qNHD1VVveWWW3T+/Pmqqrp9+3Zt2rRpttj79u2r06ZNU1XVt99+W6+55hpVVb3pppt0woQJqqqampqqR48ePSXuuXPnap8+fTJjmDZtmg4dOlRVVTds2KC5fR/6fgYyAEs1h+9Uq4GYEiFd0/l41cdc8c4VzNo0izKhZXjy0if55JZPaFy1sdfhZWMDKuasbNmyLFu2jClTphAdHU2/fv2YNm1atnJhYWH06tULgJYtW9KtWzdCQ0Np2bIl27Zty9cxJ0+eTExMDB07dmTnzp1s2rQpW5k5c+awbNky2rdvT+vWrZkzZw5bt27ll19+oXv37kRHRxMWFpY5XHxW/fr145NPPgHg448/ziz3/fffM2jQIFq3bs3VV1/N8ePHiYuLO2XbRYsWZTZD3Xbbbfz8888A/PDDD9x7772AM2pwhQoVTvt33njjjcyYMYOUlBSmTp3KHXfckfeTlAuvZyTsBUwCgoG3VHVslvUTgEvcl1HAOapa0V2XBqx21+1Q1auLJWjjd3Yd28XD3z7M4p2LAbi0waU8fdnTxXZPR0FkDKi4P24/RxKOEBka6XVI2ahe4Mlxg4OD6d69O927d6dly5a8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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure().gca()\n",
    "\n",
    "# target constraint at t=0.5\n",
    "fig.plot(pltx, SOLUTION_T16.values.numpy('x'), lw=2, color='forestgreen',  label=\"Reference\") \n",
    "\n",
    "# optimized state of our simulation after 16 steps\n",
    "fig.plot(pltx, velocities[16].values.numpy('x'), lw=2, color='mediumblue', label=\"Simulated velocity\")\n",
    "\n",
    "plt.xlabel('x'); plt.ylabel('u'); plt.legend(); plt.title(\"After 5 Optimization Steps at t=0.5\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "2r8mVjyrZKnY"
   },
   "source": [
    "This seems to be going in the right direction! It's definitely not perfect, but we've only computed 5 GD update steps so far. The two peaks with a positive velocity on the left side of the shock and the negative peak on the right side are starting to show.\n",
    "\n",
    "This is a good indicator that the backpropagation of gradients through all of our 16 simulated steps is behaving correctly, and that it's driving the solution in the right direction. The graph above only hints at how powerful the setup is: the gradient that we obtain from each of the simulation steps (and each operation within them) can easily be chained together into more complex sequences. In the example above, we're backpropagating through all 16 steps of the simulation, and we could easily enlarge this \"look-ahead\" of the optimization with minor changes to the code.\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "23T8WOKUZKnZ"
   },
   "source": [
    "## More optimization steps\n",
    "\n",
    "Before moving on to more complex physics simulations, or involving NNs, let's finish the optimization task at hand, and run more steps to get a better solution.\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "id": "JIpn4s4YZKnZ",
    "outputId": "85274162-8128-4e2b-a6a6-76a7d3a07c62"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Optimization step 5, loss: 0.183476\n",
      "Optimization step 10, loss: 0.096224\n",
      "Optimization step 15, loss: 0.054792\n",
      "Optimization step 20, loss: 0.032819\n",
      "Optimization step 25, loss: 0.020334\n",
      "Optimization step 30, loss: 0.012852\n",
      "Optimization step 35, loss: 0.008185\n",
      "Optimization step 40, loss: 0.005186\n",
      "Optimization step 45, loss: 0.003263\n",
      "Runtime 132.33s\n"
     ]
    }
   ],
   "source": [
    "import time\n",
    "start = time.time()\n",
    "\n",
    "for optim_step in range(5,50):\n",
    "    (loss,velocities), grad = gradient_function(velocity)\n",
    "    velocity = velocity - LR * grad[0]\n",
    "    if optim_step%5==0: \n",
    "      print('Optimization step %d, loss: %f' % (optim_step,loss))\n",
    "\n",
    "end = time.time()\n",
    "print(\"Runtime {:.2f}s\".format(end-start))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "JA07WBp8ZKna"
   },
   "source": [
    "Thinking back to the PINN version from {doc}`diffphys-code-burgers`, the error decreases much more strongly (by ca. two orders of magnitude) with a comparable runtime. This behavior stems from DP providing gradients for the whole solutions with all its discretization points and time steps, rather than localized updates.\n",
    "\n",
    "Let's plot again how well our solution at $t=0.5$ (blue) matches the constraints (green) now:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "id": "a3BFszmLZKnb",
    "outputId": "d341b7dc-0794-43c3-fb1b-a6b9bc2615dd"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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03qj6+l1716n6+PW51j2r78S9aKL/lFYrbBau3T5VzdsSCqUOF8Zu11htYa3eblQjney1q1bl/U487zk98/xHD58WJs1a6b169fXfv366ZIlS7LWtW/fXleuXOnGhs6fP19VVa+++mrt0qWLpqam6po1a7RZs2aqqjpz5kx94IEHsrbv3r27Ll68WFVV69Spo3Fxcaqqum/fPlVVTUxM1LPPPlv37t2rqqply5Y96rz06NFDU1NTVVW1X79++tZbb+mOHTu0du3aumfPHk1JSdG2bdsedcxMAwYM0BkzZqiq6vLly7VTp06qqnrzzTfrjz/+qKqqW7du1YYNGx4Te48ePXTWrFmqqjp9+nS96qqrVFX1xhtv1LFjx6qqanp6uh44cOCouBcvXqzdu3fPimHWrFk6cOBAVVVdv3695vZ56P0eyASs0hw+U60GYkoEj3qY/cdsLpt5GQs2LKBsYFme6fgMH978IWdVOuuosomJHp54Ipbmzf/mp5+OULVqAB98EM2CBWdy5pmFUyM46wznW2LyvkgbUNFLWFgYq1evZsqUKVSuXJmePXsya9asY8oFBQVx+eWXA9CkSRPat29PYGAgTZo0YcuWLad0zPHjx9OsWTMuuOACtm/fzoYNG44ps3DhQlavXk2rVq1o3rw5CxcuZPPmzaxYsYIOHTpQuXJlgoKCsoaLz65nz558+OGHAMyePTur3HfffUf//v1p3rw5V155JYcOHSIhIeGobZctW5bVDHX77bfz008/AbBo0SL69esHOKMGV6hw/HuSbrjhBubNm0daWhozZszgzjvvPPmTlAtfz0h4OTAO8AemqeqobOvHApe4T8sAVVS1orsuA/jTXbdNVa8slKBNkRNzMIbHv36c5duXA9CxXkdGdB5xzD0dAPPnH+SBB7azZUsqItCvXyVeeKEGFSsW7r9CdLTTRJMeX5n4pHhCA0/v0uCCoHquT47r7+9Phw4d6NChA02aNOGtt9465sMuMDAwa9gYPz+/rCYvPz+/rOHXAwIC8Hg8WdskJx97xduSJUv47rvvWLZsGWXKlKFDhw45llNVevXqxYsvvnjU8s8///yk/qY2bdqwceNG4uLi+Pzzz3nqqacAp3lr+fLlhIQU/BeXMmXK0KVLF7744gs++ugjVq9efdr79FkNRET8gUlAV6AxcLOINPYuo6oPqWpz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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure().gca()\n",
    "fig.plot(pltx, SOLUTION_T16.values.numpy('x'), lw=2, color='forestgreen',  label=\"Reference\") \n",
    "fig.plot(pltx, velocities[16].values.numpy('x'), lw=2, color='mediumblue', label=\"Simulated velocity\")\n",
    "plt.xlabel('x'); plt.ylabel('u'); plt.legend(); plt.title(\"After 50 Optimization Steps at t=0.5\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "BX8hUE0XZKnd"
   },
   "source": [
    "Not bad. But how well is the initial state recovered via backpropagation through the 16 simulation steps? This is what we're changing, and because it's only indirectly constrained via the observation later in time there is more room to deviate from a desired or expected solution.\n",
    "\n",
    "This is shown in the next plot: "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "id": "3oBdj2EaZKnd",
    "outputId": "1e7dbd37-8d14-4acc-f526-1bab26c6a3a4"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure().gca()\n",
    "pltx = np.linspace(-1,1,N)\n",
    "\n",
    "# ground truth state at time=0 , move down\n",
    "INITIAL_GT = np.asarray( [-np.sin(np.pi * x) for x in np.linspace(-1+DX/2,1-DX/2,N)] ) # 1D numpy array\n",
    "fig.plot(pltx, INITIAL_GT.flatten()      , lw=2, color='forestgreen', label=\"Ground truth initial state\")  # ground truth initial state of sim\n",
    "fig.plot(pltx, velocity.values.numpy('x'), lw=2, color='mediumblue',  label=\"Optimized initial state\") # manual\n",
    "plt.xlabel('x'); plt.ylabel('u'); plt.legend(); plt.title(\"Initial State After 50 Optimization Steps\");\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Ug2pTemYZKne"
   },
   "source": [
    "Naturally, this is a tougher task: the optimization receives direct feedback what the state at $t=0.5$ should look like, but due to the non-linear model equation, we typically have a large number of solutions that exactly or numerically very closely satisfy the constraints. Hence, our minimizer does not necessarily find the exact state we started from (we can observe some numerical oscillations from the diffusion operator here with the default settings). However, the solution is still quite close in this Burgers scenario.\n",
    "\n",
    "Before measuring the overall error of the reconstruction, let's visualize the full evolution of our system over time as this also yields the solution in the form of a numpy array that we can compare to the other versions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "id": "HiaIZgUlZKnf",
    "outputId": "6fb48869-39bb-422d-a9bd-4fd1e33d57ce"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pylab\n",
    "\n",
    "def show_state(a):\n",
    "    a=np.expand_dims(a, axis=2)\n",
    "    for i in range(4):\n",
    "        a = np.concatenate( [a,a] , axis=2)\n",
    "    a = np.reshape( a, [a.shape[0],a.shape[1]*a.shape[2]] )\n",
    "    fig, axes = pylab.subplots(1, 1, figsize=(16, 5))\n",
    "    im = axes.imshow(a, origin='upper', cmap='inferno')\n",
    "    pylab.colorbar(im) \n",
    "        \n",
    "# get numpy versions of all states \n",
    "vels = [ x.values.numpy('x,vector') for x in velocities] \n",
    "# concatenate along vector/features dimension\n",
    "vels = np.concatenate(vels, axis=-1) \n",
    "\n",
    "# save for comparison with other methods\n",
    "import os; os.makedirs(\"./temp\",exist_ok=True)\n",
    "np.savez_compressed(\"./temp/burgers-diffphys-solution.npz\", np.reshape(vels,[N,STEPS+1])) # remove batch & channel dimension\n",
    "\n",
    "show_state(vels)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ozka-l1UZKng"
   },
   "source": [
    "## Physics-informed vs. differentiable physics reconstruction\n",
    "\n",
    "Now we have both versions, the one with the PINN, and the DP version, so let's compare both reconstructions in more detail. (Note: The following cells expect that the Burgers-forward and PINN notebooks were executed in the same environment beforehand such that the `.npz` files in the `./temp' directory are available..)\n",
    "\n",
    "Let's first look at the solutions side by side. The code below generates an image with 3 versions, from top to bottom: the \"ground truth\" (GT) solution as given by the regular forward simulation, in the middle the PINN reconstruction, and at the bottom the differentiable physics version.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "id": "1b0CXDEDZKng",
    "outputId": "ee4c501b-47a7-4673-9955-0a503f7001bd"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Solutions Ground Truth (top), PINN (middle) , DiffPhys (bottom):\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAesAAAEyCAYAAADawvhGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAABueUlEQVR4nO29f7RtZ1Xf/ZnP2vucc3OTkIRgDIEKKq1SrVDzgh12VESxSB2m7asYbRUsNtoXan/YvgTtUIulI9pWS4cOagpUsGqgWCW1+FJ+vg5fRQlK5ZfViCCJgZgfN7m/zjl7rWe+f6x1k5PLPXd/57372Wutc9Y3I+Oes/c8z/Pstfde3zm/cz7zMXdnwoQJEyZMmDBcpL4XMGHChAkTJkw4PyaynjBhwoQJEwaOiawnTJgwYcKEgWMi6wkTJkyYMGHgmMh6woQJEyZMGDgmsp4wYcKECRMGjmJkbWbPN7P/bWZ3mtnNpeaZMGHChAkTVg0ze72Z3WtmH97neTOz/9Bx3O+Z2V/e89yLzOwPu/9ftJL1lNhnbWYV8AfA84C7gPcD3+ruH135ZBMmTJgwYcKKYWZ/DTgBvNHdv+Qcz78A+IfAC4BnA69292eb2VXAHcD1gAMfAL7c3R+8mPWUiqyfBdzp7h93913gNuCGQnNNmDBhwoQJK4W7/xrwwHlMbqAlcnf39wFXmNm1wF8H3uHuD3QE/Q7g+Re7ntnFDrAPrgM+tef3u2g9j0dgZjcBNwFsperLP+/IpeLQtpIFno2pj9uECRMOOz69c4qHFjtlbrKF8Nef/5f8/vtOhP/uAx/4448A23seutXdbw0McS6eu+48j18USpH1UnQX5VaAp1/+OP8v/8dXiH+nfY5UO4AcsI2M64Uci8h6SyByDUqg79cfRd/Xa0wY23t70PDdv/eevpcQxn33Hed9v/0vw3+3Ub1o292vL7CkIihF1ncDT97z+5O6x86JKjVcdqnmGTVNJdm5W4jY1ZtEiKxDtlpGIucy80dQyhEqtYYi8xdyxFSMjdTU90v7do8PY3m/bJQao+Ne9zHxfjx3N/Ccsx5/78VOVoqs3w88zcyeSrvwG4Fv2884VZlLLj21dFDPRpNFUmsqnayzTuw567cTlVgjjsUZe2n+Yo7F6m88qrMCMYcltoYSr2tSV4BS2SsJfTtWEHNCen1v+79UcTi4N33MfDvwMjO7jTbN+5C732Nmbwf+tZld2dl9HfCKi52sCFm7e21mLwPeTvs5fb27f2Q/e0uZrctOLh83G02tLdmz4Y0arVa4SACqswCtw6DA3eT5o6Tad8ReynbVN7Qo+fTtsERQwrnpW9kYwhpKkWoqMKx6rfp/V+NwnFwgsjazX6CNkK82s7uAHwLmAO7+H4G30VaC3wmcAr6ze+4BM/sR2qAV4JXufr5CNQnFctbu/jbaF7MUqcpsXKZF1nmhLTk3CRfJMjcJF0m4qXUfWZ3f3ciiYwH6TUJ1Fs6sQbILqBCRcVtb3bFQX1n/ikHEAckrnx8gFbj7l0uxjMdhiay0b8dCJ+tJBn9kVPdvXfK8Ay/d57nXA69f5Xp6KzDbC6sy88ctz1l7NvLOXBrTm0on60Ulk7XqLEQI2HPSbd1AjsJTiITV+UPyunhdQzUGg1ABVi/bR6TSMTkhEIlCdYclsoZUwAcYm8MiYYyhdX8567ViEGRNlakuP73UzN1Ip7U3xetKJtZUB6LwxUwmiyxK9tCuVxqziRCwbhuJ7NVrBWUi9lLOgjymG6DlyDwblXi5xuRYROBuchQ6hKJIFeVyy5rDUuI1mY0wsnbH80TW60EF9rjlZpYdn+9oY9ZGWog36sVMJ8vFTI5sG1EFeGRcAZWbrgI0CSK2Iorl4gOKgYpS8r68eyBQ41CMrLMerfYtmZeIKqMOiLreIcjgfcvrg8EUWa8JVYLLjy63yxmbbS+3A1hk2NWiH9vNeCPmdFQZPhs2U6OvRJqLikFA3k9ZJ8sUqJ5Pte75R8i6RBQccUIizkKS19AUKR4soS5E11BEXg84FvLnNY2nILDvnQ7jzFkfDgyDrFOFX7Y8tLbcwExc8u4utit6Wzs1lrUPqc935Jt63hG3E2TD1Vx4oBjO6yTfUNT5AXIt3qSiKoCIiAxfQjEoRcBkvXpfdxbKECAUchjUj1ZBp0KviTiAjsUoA/UpZ70+VBV+6eVLzTw3WNJuqDbfgY1dbf7ZDtRiFJ5qULzPDCkttPmz4WoUXleg5nZ3Z7KtV3oO1sQkrGcD8SZhdQqsNeuRQiXefXIiVaJiEJDM41Ht8vchKtmrzmW7Bl3dkPPQ2SCtPg9bSl0YgsMgjRmKwrXvzDgja4cs3mtHjEGQtVczmssfv9TO6l2SSNZeL7Dt5UVrADbfgEWA2MVIxSrR23PXJfu6kfePpyrr0m4kvx2Iwl2Mwm2eAmvV98W3DsNqiTUi7xMo8itR5R4pMmztCxQ3FXAWQFcXSjkLUGC/f9CpWLkTMMLI2n2KrNcHq2iOXLHcLDe4SNZpdxtmYoHX9imoNyVTM9XtzpDEYricdWJvHFNzxhGyVovxcqKSc/GGy6XQJhf5edXoEaAq2aPL6yUcAIjm11XHIhdzAlY/prWOqwhTX1fgskaLF0PqgoKkq0awemdhlNXgOEzV4OuBpxn5kquW2lngDfGNHdK21m/cZnOsFmWUlPTIOkLsMzGyrxsQc/E2cxBz8ew2UgrOaGRit2ytw6DAddsQWQYke5+Jaw0U7uFJtrWqZxUAQk6APKTqhFQFi+Hk96uAswC4ei8g9rpW7iyMET6R9fqQKti4YqmZey2XdNjuKT0Kn21gtUaWCSCvtg+t5QbUL/OshpkYre7WumMhyoRkZEmRDMzEm18GRLK2SNGYGCkYgcK1AFm7J/mmHsnxy3J1VAVQHaaAE1AFojXVCQirBarAE9mRII9pWGDvtPzKCjgL44ysYdq6tSaYVdjGlcsNvZbLH7zawmaatI09jM1EyRpkAtS93qwXztULqMUP5mxXXivbYmSfc4zYRcmeDFaJFfniNjuykSJE0ajV+0muG/AcyMWPxAF4dNz+UgFWIasAEJDiQ46F+DkspBi4BaJlVTEYYQBueEh1HSsGQdZYRTW7dKlZJLL2ahtPYh/xVGG1RtaeqjYSXjqoHn1bvav3Q6xr2NXWagHJPiLvsyumDOpGJmAa16Pw2vVdM5HIXu37njM2C5ClGq1Ftq+p+f3AdjALKAYW6N/pWc+bV6ojSCwKVjko9H5FZPjROAEjjKwnGXx9MIxUbS21i1T8ZZvJZO1phldas5UE+Mpl8K1Alfsupu41n83kKDxM7ArqWt4SR93I+fU2F68Ny65+85cjezeo9WrwlV9XAFXeD+x1j8r7MurURsLSwKoKYPo1AF0FsFgqQLLLpr/+KPlG6jwEjFMGn8h6fbBElZZL1u76cs1m5CxG1gDVEd1WdRrED1Csyv00yMVwlR7hRwrnVFKp6jbHrqCuA8Vw+p7KiGTvSbz5Z9dP3WgCjkXgRDcT1+rZMDVSzIZFpG2V2C0QLYt1A1ZFisbKqADqtYpEwOpnEAjlrOVi1xHK4ODYlLNeDwwjmbAUxaZDthoTI2tAbgTv6uZ7r/EtdUy92QupkovhTJXsz2DFEWAov17V0Ii2yXRipwyx6wScddtI90q5FiDghAWKxiwHqtwDDkDECdGVCH0LI6ZHwZFOesVUABGyIzpKGZyVF/0OEYMg6wiUCBzAvNIj8ZlO1g3IkbX8sc91GwUrpmmGVWrOWifrElXuzOayChAmdnXrkHowRXZIaoFZbvPmAkKSfYTY1eIiD8wfyNeSs07ComJgVSyqjcj7kcptOccfiILLbPUroAKMNbKeZPDxItlMvkdVaYtsIgEH5JYmIJfLVe5pJhfDWaqwJlLlHiB2AZ4bbFftCZ3kJja2q3eRC2FXrYgPEruai086sYYk+whZq1XDas4e5KgSgECRXUTeV6NVctLPCYhUY6sqQHbdEUNPScnOwmhz1lNkvRY4ThaJTZLLg7YZqFTta6YTtvvyCndoo3r5K5JmeOAakDUlQg7ochOyVRUD6kUgF18gvx4h/5z1ve51o48dKbJTo7qAZO/ZZaKKEAryWq2crYq6kqPwkLyvXtdALr5VAMTvgVg8OM7AeiowWx880+TlEWAkWi5B6gBujZ47F80818LxDZ1tmsnze5rhjV7lrninTiyyluOkVOntYXe3Vx9Z56wTe603myFFbAOV42qVffa2yE2ARYg9oALIBFDpawV0Eg4Uw1nyUN93acwqh7blyePKdRudCqB8vkcZWROrzRkpBkHWjpMFUvE0o0rLt3hB12grEoGKUHPm2Wt9raIED5DzDBfH9foECFviIBJZ63vdI7l4q3flwrliUCX7SHvaOrJ1K0jsCnKOEbtKwIFceKTC2cRaALLJRd6Wm0BjmsA2s4hjIRcvJp0wK2LyvtZPeHzwSQZfH7yhqZf38bY0k1dsNmujYMm2Wjmxh3Lm8t2hvQaKYwOxbWaytB+RmyKSear0Lm7hKvdV74vPuFoRH4qWg8SuIOcYsavRWt3ocnEkF6+Z0RYVRVIBBQryUpaL3ExNGySPyfZqkZ3qAIw0sj4MGARZuzf47oPL7ZIok9KRtRhVVmmrd3ldP0M39pbJJDy/TB9TNQxE1uyewitNtUjplNyYRhYfozlrlQCj+fUIsSvIOUbssrMQ2T4XJHYV6gm0Gb0WILCH3puEqQmsSEFepMp9xXn7UW7dYpLB14fcwO6x5XaBaNWqLb1ye9aSu4TIcbOliuFEGbwEPNc6seeF/tXfQI6AM/qXM1QMpyI3Rcg6ROzaiC0ixC7vdY+8rsj2OVUudvkihCT7gHCkHs4B4IEbh/xZzPr2NTmyH6MMPlWDrw+Wa9KpB5YbJp2sfbYlk4rnWmp3CshXLJleCBZBqXFdjb4ScjFc6OCV2RbUmrwPrLz6072ObUkLNLEp0UUuglDhnGqrkjrEcvFqfj1im9GJPSDZk/Tt/qGGOyKxemL1kf0IZXBznyLrtcEbqtPHlpupN0jAZ5u4ePP3zSvlrWOgReEZAvn11efMz4yrQnZWiGxdC5w/3mzrVe6BsXUZvNCWtEIErMJyDmwLDNQCRPLrEUQkexXZdfuMJoNnILnmA4S2zxGT7EXIkf0oI2umyHoZzOwTwHHaYKt29+vN7CrgTcBTgE8AL3T38yakralJJ5bnrCM3E59tkDe1hiDZazm/3WzWumQuwtKMWXVUtleJvUzOvAHhhLTWtiar8r7N8ByIrEWyjlS5y1Pnulwx3KoRyK9bznig7/yoiD1SOKdCta3Qt89BoIlNMLLvz2csi0KRtZk9H3g17Tv4Wne/5aznfwL46u7XS4DPcfcruuca4EPdc3/i7t94setZBet8tbvft+f3m4F3ufstZnZz9/vLzztCzqQTDy+fKSXdg5pt6D206x1cPPs6g3yaVyMSVaSHee/FcDaTv/SZYMSuHmkqj4gsl3ugzTO5gTpwvQp0kQMtt+kQOCVtEer7LudLtdm7NRRqYlOkcC6CAJmoFyw58hkpKrFPkTUA1sqSPwU8D7gLeL+Z3e7uHz1j4+7/ZI/9PwSeuWeI0+7+jFWuqYQMfgPwnO7nNwDvZRlZNzX2kBBZVzMq8Sxn39jEdrVIzba28Q2RVHINCqmkSs+v2wzE6T0F8uuFiuGK9GcnsC0s0Mu9SDFcpMo9VXpv7GAU7mi7I+RcfKn8emDrmMwV4S1p4lpDufhI4VzANiLZR4hdsRslWTu2euXmWcCd7v5xADO7jZbbPrqP/bcCP7TqRezFxZK1A//T2kNQf9rdbwWucfd7uuc/DVxzrj80s5uAmwD+3OOBE6eWz5YSLMRoeb7R9pBWbHd38A2NgIjkK0X4bFMn9vllehvTSm/MUqoYrkR/dgAXbeW95tVWILcbaA8LmnMHsKtH+KVy8WqzFwf5Bhm7VoGKeFWyj5B1CeTAqV85sM86SuwKxkjWF37q1tVmdsee32/tOAzgOuBTe567C3j2uQYxs88Dngq8e8/DW93YNXCLu//yhSxwLy72Dv1X3f1uM/sc4B1m9vt7n3R3t31OM+8uyq0AX/7nkvuDwld6VmM74g19vg2nT0umtnUKm29otrs7WkOMgGTvsw2yeDhH3nwczVwj67xxJVmNwudXaHbokTUU6s8uIlTgFrUNtHxddeV6pItcrD/7rlzEadEoXBkzUAwXaUxDXeuKRYmCwAo9Yi9J7AoiPd8HgwveunWfu1+/ggXcCLzF3fcu4vM6bvx84N1m9iF3/6OLmeSiyNrd7+7+vdfMfolWOviMmV3r7veY2bXAvUsHaozmxHICsOTYjnjkYuXYlpgr3N6VD2awul794RCzOY2aX996mHzkKsnWvaapjmjjBvLroSrzQsVwj/1e7INIz/dgG9VQbxqxEMpBUgGczdA2MxUeOCsdkJt3qLd/D9rKx6+mSr8OEWIvgZLErmCMXA2YWmmn427gyXt+f1L32LlwI/DSvQ/s4caPm9l7afPZ/ZC1mR0Fkrsf737+OuCVwO3Ai4Bbun/fumwsbyoWx5ZHi5acNNc+yDavSRu6rc3F1qQ7x2TvM4mSPdUM2xbSAIBvXUK+5CHJtr7sJL6hVZnXIMm1ZjMQA2uzmazXRovhIvK6gqgEL98a5rNQ1C4h12RNCGqr3OXIekd3cAIEWKQiPjc6secm5Fi43ExBdPAjTXQiufhIfl09K36MbF2mN/j7gaeZ2VNpSfpG4NvONjKzLwKuBH5zz2NXAqfcfcfMrga+Evixi13QxUTW1wC/1HXGmQE/7+7/j5m9H3izmb0E+CTwwmUD5ZxYHNdIpdoUCdB0Yk/zGptpt9/q9Lbc4i/tLO93DmAbYKpkf+QIdolQOQ/Yrl44V+daq8ZOldrlEau2ZHndrSkmryuISPDu+va9nLcDFenilQ1kC9TcPtA6a2I6prUPODiCTayLXBWS9+X8eoEucp4DY+bAkaolMEoZnJVfM3evzexlwNtpv3Gvd/ePmNkrgTvc/fbO9EbgNvfHHAT/xcBPm1mmDVdu2VtFfqG4YLLuquS+7ByP3w98TWisJnH6YSGyNsdOaeSTqkyqtC9/NWvkNoezrSNy/+LqhFiNXjVUR0XbI8ewI1pkXR1/CDa162W729LNz1PFQm31OT/K4pJrJdtqfgVZJKsqbfa813zWbzEc4FksrqoCBV4pVuUuRzM2E+V99P3ruQFVso+sNULs2oiAXgwXIvYS+fUxcrUHCu1Cw/rbgLed9dgPnvX7D5/j734D+NJVr2cQHcxykzh9Usutpkr8IJvrZJ2yTsBzNU/mzI5fotlWDbMt7caTNheyulAdO4XNtei+OnlCk99mM2xXUwHyJZdTX3lSsq0vuYa09QTJlvkV8olqpaJ1uRo70qOeWKHbysdrtmOReDQSXiWivdwjMrgq7+srCBXOyYWpEWIX5x9rZD21G10Tmlxx4qRW4WxiFwAzZ59C9M9CitimTFKJXYwULTnVTLOdzRqSaDvf3NWcm5TZ+NOT0rW1WWZ+zUek+avLEvNr/liyrT/nSdSP+1zJdveqv4AJXdQszdjYuFouiItE64H20eFCNwVFiuHSHBrNEWubrUQcC9FpUuvbrNEr1+vdYE5TPN0vELEXya9HiF2cf6Shdb+pgzVhEGSds3H8tBhZF2g0rxJ1dH4j5jBIY5pTiepCSo08/3xWS06IWWZDrLLf2Nhl81Lt5r951Z1sXPW7km36C7+BXyo0O0kVp7/0G1oSWmo7Y76lOQvRdrORs8JXfq641/rWMVVavwBE2rnqY/bcxvUQRHOjgDOR9brQeOLhbY2sSyC77k16wDbQjwkXfYDsJq8hY/Jrq3OSo7XtRoto6pw4IXbvOrGoOC62mvzUSed0o90of5/fJwuKgdNw2rXCPYAsto9MgWowI8n2lelnu1fi19yoSK69B6n7b5XzA8xc7HdAIqF1p5t5he35Ljr+mN/3IgW+szPxvTJMHjd19pKt6eOqr+rO7beIlhPWjcGQ9fHd5TJZeyzt6ok1B2xr0c7daNT53VgESLUWiX27SfIaHl4kaStm43DftraAU03m3kbbknZ/up9jfFqyPb57D03WIva6UQk4E+y1JcJQM9z6/vWEiWRtJH0PvSVMJKCUZpj4umahugH9dakOi6VEJbdmreTXpc6fCFxXT8xk50p3mJJrtgt5r8eQMMnga0OTjYd2NY86QoCqbeMm9wxYuMlR8HajfZEysN1oa93Nxo6ovp2soRZf2H2LXbLwwhqcz6T7cCEO37HTPCQS8PbiGHWjFaM1+aTWFKW1Fu0iCBAwBqbaitGypUCVe9IJMDCuOmYyfX6AmYl95y2gQjBfOQGfGVdBhIDbccX3QCRgiBD7CHPWF95udFQYBlm78dBCW0otduzJmHoqHYusE/tuo0f3p0QntXE4LS52u8lsN5oX+XBeyJ7y/el+aqFgyGk41vypNGadd9ipj0m2OW/jLh7SQkO5KFhBkqVKbCZHVaEIWLWlIom9yS1A7JXpnezkCDgSLROIli0QLasOEzDz2cpTAWUIGJKbZGuBNN9QYGUO8hgcBkLW8PBC2OPrxkK8RzdZl6x3A8fdnm5025O19gFauHNK7Ea0zYLTppXMPpyOsTCNAI8395J9eYGRkzm9eEAa070mu1hd7A16jXNoh2vAUpShLaFL23pUZzbDxCg8siWtEqPVZElea7I5SSRrNVoGnSwjxB6RoUsQ8JlxFZQg4HZcLb89PqruMJH1epDdeHihfehUCbhxELmSnexyFH6qybggF2fghFhdu6DmlGmkdtpOsW2aXHwqP0gjruH04oEuYj0/3DNN1ubHa2nMzli0i6KQXC3atrLy6glYlauNikqO2CudAG0WkqFVqMQ+hDywSsAQiaxXT8DQakEHWwafyHotaByOC5zi3hKrgkWGWkwu7+RMI9qe8B3Us4EeTsclu4aaExyTbHc5xULcC7vTPEwWt8zUjbZWp8GFCLzFmIq2wNR8KUmOgM1mgfxuILIOROy6tD3X52ceqlxftQw9EXCEgKGS5x8jpgKztaEl6+U3dcflfG3tzq5YhLRDzUKMAE+mk2RBrnWyTMANC7azVrW8yKeoG601aZNP6/t2fQeXibVU0ZZqGdkOpUd1JYq2SlVN69J2pReNUclkWYKAATbErVvtuKvPA8ek7cduCTuvrd7zrgixVyve4jUoOHpucsQYBFlnnOPCqTAOnBbJZ0EtF1edTqdpRNtTdpwsOAFO5lR+UBoz+4JduRJ6h+xaztp9B8Sj48ZWtCXPXqBoKwUi0GSzgLSsE2CE2OeI/eFJch66Qi+c67sQq2JGEutXUuBzGCHgKuBgzmRiDewJFz+vY203OkXWa0LjmeNCJXDG2TE1D7zLjmkR6I6dphYrkU83D0nblqCVoRXkXMv7ht1rHPFQgGJFWyqiW5xUYo3tMV510VapqunItqXIvuESFdYlC7Fkh8XFnPXICDipR/AG6Fodc5xUPcnga0M256RArA21TMAL22FXrETezadoxDzsTvOwTNbqvmH3LFdN43kARVuRPPDqG32UKNoyS6Gq6VAeWCWfQNX03PRoeQh54D4JOIXk4nERsOpa2EEm60kGXx8aGk7Y8ig0W2bHtVOkFr5NnbVoeZFPS9uWABbNSdRoVY2WIQeafJQs2lItVbk6yTnjSAScbDMQLavtK/Wq6WRzOVqN5nbl7VDqwRjoeeC+CRh0skzYgWz3GSVg1VZ1FkYLMd03ZgyCrJ2G0whk7Q07WSPr7AtZ2q6bbZmsc9Yi+1jVNJQp2oI+c8ZGFcgZB6qmI0VbgWh1lgLRqkrWBIg9mAdW0Pb50vPAqm2UgFVS65uA5dwuUAUIMGIbIWDdCdDsxknpPkXW60L2htP5oaV2TmaRtV7T2WsaMbLOeTdUNa2jz3wxxOVqPbLVxowVbUVaXSbxpqoSMARyxgFpubJ5r3ngCAEnkkzCEbKMErBKVpWqxBTI7bbzRwq89AhcJdbWXlUBtG+3KpcPCpMMvj60JLxcMnYaedtS9kWganqBSqx6vri1Xj2CcrW8H1iPQEMELLa6LFY1HYmsRWk5WSUTYOVzmYDnaHL1UAhYL9qKEGAZAu5TWo4QcJvfFufXzNpxTVvDCKm6xUTW64F77nLBS+xoyFkl4DFVTUPffalLFG2lgLRdBWzVbUstpfVLwBUzWbIuRcBqhXOsajpGwHKBV4HINkJqxaTtAAGrw0Yi8Mhaxwb3Q5GyHghZ42RBXm6rplUZemxFW6vvSx0pxIpI22rRVmXzUNW0KoPP2ZIj67ksbVchUi1RiLXhevOQeSDFESnaUptnRIqrShFwqchWxSxClgGPYdXSNugOwGgpfYqs14Uc2Gc8hKItFQX2GAeKtlLakJ2AKm3IxD5Pl0h2RpKj4Ej7yplt6tKy672m52LVdKxoy2SyjOzxnYeOXNQJOEbW4vyFotUSkW0VYKtkMWKV7PTpZWkbdBI+wAH46DEQsnYQC7xGJVcX2mOsknWVNvUINB2R7CDWvEPtntUWYpXJAydfdc5YJ+DIFiO1fzPAPFK1fAAJOBpV9h1ZR6TtCF8e7CpvEY5OCyPGYMi630YfZeRquS+1JZKJRBEo2qpsM1Q1Lcu1pkfWqgx9kAl41dXNECTrnqXlGFnLpiPLGeu2q96OFbEdLalPZL1OHKy+1EZFEnO7kEJFW7K0bJtyk425aZF1ogodY6jK0NFCLF0GV4u2Yk021AKrksVVq46Co7Jun5Ftufl1RMbsm1gPPFkf/JT1kMh61TDknHGhPcaVKC1HWl1GqqY30iUrj5YjBBzJA0cJWCXASG53Ln8G+s3tJrMiEWg0qiyRrx2CXCyvt+doOewECIw2ypy1g+cxLjyGpXcyM3s98A3Ave7+Jd1jVwFvAp4CfAJ4obs/aO2O+lcDLwBOAS92999Z7ZJXnzM25vJ+ZDVaNqpQq0s1Z1wFWl3O2JRt564XbW26loeOFGLNvJJztpE9vqUIuIS0HCVg2QkoUIlcqhK6lFzcZ7QaGbdVDPQwsYRkP0oUkMHN7Pm0fFYBr3X3W856/sXAvwHu7h76SXd/bffci4B/0T3+r9z9DRe7HuVO+jPATwJv3PPYzcC73P0WM7u5+/3lwNcDT+v+fzbwmu5fAWquTM0Zz4oUbc0C0XKkanpDtI20r9zwI3JuVyXg1laPrCMErNpW6AcjRHK780BkG7n5RghQvfnGumfJpoH59TGjFdaqXd8y8MxWT6owyeAXhBVH1tZGej8FPA+4C3i/md3u7h89y/RN7v6ys/72KuCHgOtpBfoPdH+rnZm8D5YylLv/mpk95ayHbwCe0/38BuC9tGR9A/BGd3fgfWZ2hZld6+73nH8WTbI2TO+0FSjaqpK+H3kmVlib6dFyopJl6IoZlbgfd5OtUCGWeubvpnw8o07WQyBglVQiXabC0XKPhVARWbWUXNx7IRZeJFotQayxbV6qYzHC5G8ZGfxZwJ3u/nEAM7uNlt/OJutz4a8D73D3B7q/fQfwfOAXLmZBF5qzvmYPAX8auKb7+TrgU3vs7uoe+yyyNrObgJu636QoOFK0FTkYYpaOyFXTG+lSmdi37DLJzkhsuiiDBwqxShGwKi0bJh+MEJF150m/Tak9mVtbzc6szBajUnJxicg2SuwqSkSrB5NU43uyV2k3LNiFRtZXm9kde36/1d1v7X4+F5edSyX+P83srwF/APwTd//UPn973YUscC8uusDM3d0in7BH/+5W4FYAs5krhVtmSS7wSmkmF23N0xFdWrZA0ZZIwIkky9AtWYsV3miFWFECViPbSG53FpCWIxGoSlQpQsCUKYSKkOoslIfWEFlrLFoOEFDvkbVOmCXIEiDFb6fL51+x3eAgBiVn4T53v/4iZv3vwC+4+46ZfTetyvzcixjvvLhQsv7MGXnbzK4F7u0evxt48h67J/Fo8n1fGCZFzEbFvDoqLbCymXzi0tyOyCcjbdglkrQcIeDWVt3ilOQtRvPAlrS5pYAMvXppOVowtepCqOj2njIyeBlbPQIsJwH3GYUOgVRLFa6tuhhtlGRdRgZfymXufv+eX18L/Niev33OWX/73otd0IWS9e3Ai4Bbun/fuufxl3X6/rOBh5bnqwFLUuFWsrmcB56lTbl71sw25e1Im67ngY+IkbVhbIhvxZwkN89Q88CJMtJyG61qY5aIls/Y9kmspfK1JaLVvkk1Mu6YSLVEdXc7bgwXIICOBzl6NZbi/cDTzOyptOR7I/Btew3Oqsf6RuBj3c9vB/61mV3Z/f51wCsudkHK1q1foPUSrjazu2ir3G4B3mxmLwE+CbywM38b7batO2m3bn2nsohExUZ16VK7yuZy8465bcknLm36lpwHjhCwngc2NsVtZlUhaXme9Mh2Jt6lovnaPuXiYsVVwWi1lLSrwMyLRKETWZYhysj88md7jKG1X3DOev8h3Wszexkt8VbA6939I2b2SuAOd78d+F4z+0agBh4AXtz97QNm9iO0hA/wyjPFZhcDawu3+8W8utSvOvKXltpVzNm05aQO7WlHqgw9Z0POA2+xITfkUAnYgE0xso1Iy3Mz+cs3D9z95wUIMBIBl5Oh+49W+5R2o6Q6JrLU5y9T4BVKG/RI7P/uU7/In2zfOyrK/vLrZv7//V9aMe9eHPkXxz5wkTnrtWIQHcwSFZc8ohicx84TR7K2xWnOhtxqcpO53D5ywyo5t6sSsKGTZRUohIrt2109AUZk8FLRaigKL3BDjRWjjSsC7TOyHAJR9u0slFlD/8HbBWH1MvjgMBiyPpqXR8yJxJYYLW8wkyuc51bJBLiZ1LgaNsW7hFmMrCOkqsvgomHQVo1WoxJwRNqVxqRMHnRMEejYospxydBlSHDVIfCoQuoOPrUbXR8qT1zqy6u8E8aWmAeeW5KLpuaBPPCm2kANk0ktmR7VxYq2NDuAedJvJpHIukS+tK3c1slSRZE9voH5SxDV2IiyRHxUSrEotoZCxK5c21HmrC98n/WoMAiyTpa4VNgTnTC2RAKuzORodZ50aXkeKIRSiR2iZL36aFXf4lSOVEtEoKGOWAXyxX2TZbloOUYoJW6lfRNgKeF1TGudsD4Mgqwr4LJq+VKSwZZ4960ihVhJv6lHiqtKRKttHlobt1RxlRqBlsprRsasAu9B39Fi3xFg3+QH45K2Q+P2vG1KvVY20py1X1hTlFFhEGSdzLhMYMEEbIjRahWQi+dJj9bUrUChCBidVMoVYpWRYA9itBgr7ipDgAezuKlgbrdHsiwZ1a76dY2S8pypwGxdqAwuE1LR7RYnMaoMRMtVQNqdBSK1SARagiyjUWUZGfhgEmDfxFqkJeUAouUIyq237yi4z8l7nPsiMBWYrQmVweXz5V+QhE6WybwIWUdIVSXLKFGOhQCHQH59S7tjIqpSJNV30VLfEjT07wCoGKcMbpMMvi5U5lw+byTbeaC4SiXWSNFUMg9sMVr9/GfspfkDYw4hWi0z/3gIqG9SGQKhjKklZt/vVwTyqVtll1EGkwy+PlTmPG5ey7YKYlXLMbJW0X8EWmbfrjz/yGTKYrLqSG7qfUfAUQzBuegbK89Zj+wzcAaTDL4mtJH1QrTN8rglmlyUuEGEC3uKFeEUGVbGWG6+Y4r+IhiLUzE2jEtaHtNaWzhTNfjakMy5fGNHsi2SqxvATWpcX2gNQ7iuE2Lo22Gb0C9G+fa7TTL4uvCJ7dO86Pc/0vcyJkyYMOFQ4/j2dt9LuCBMMvia0Phpjp3+cN/LmDBhwoRDDq3Qd2iYZPAJEyZMmDBhyJhk8AkTJkyYMGH4mGTwCRMmTJgwYcCYqsEnTJgwYcKEoWM6z3p9MNtga35d38s4cHD0PekTJkwA98P9ndmtP933Ei4AhvuUs14LvvjSTX7+K75AslXflBzwtCISSsQ2F5BmQmstsGsy+ppKyFN9X9dSa4igxHUdgpSYe97pO4RroKLEZ/AffuQdKx9zLZgi6zXBYFZpWway6PlWVRkSLuHBDcGxUDEEso44IaVIdQjXVkXfBBR5XSXio9DrL3SpSrwHkfPqVYy1O1/fn/F1YBBkbTgpaSRsvUfB2jojc1ugbVTUWYg4Agoi1x/6JzUrcPd1DEocUTkyslbfh8hJdRHIr6vQ/KHPYc8keBjI7KBjEGSNQVVpJFgqCl31jbKUXO6uf+ndjaqSzUVHIHbTKfF+RW7+fTsLkTWEXlfECSlAFNmtCAnHouAyr0tF705IBAWO1R0MpgKz9cHMqarlp265G0kMLGNysR6tliCfFLCNjAtRYhmXaqBg1coCjE9diKCEYxGav1Bz8r5VABXuZVQbGSOUwX0qMGthZq8HvgG4192/pHvsh4G/D/xZZ/b97v627rlXAC+h7Vv3ve7+dmUhSYys5dxyiFQjR0mOxwmAMtLqEFQDFWXer3Lqgopi72vP0WqJA228kAoQWoMasxZcZ99FkSUxRdYtfgb4SeCNZz3+E+7+b/c+YGZPB24E/iLwROCdZvbn3f281WNmThILzFxtK5cKFZgNwAnQ55+chb6VBej/vY1gLI5FBH3na7Nb76fqqQ7LKCnPy7zHZvZ84NVABbzW3W856/l/CnwXUNMGrn/P3T/ZPdcAH+pM/8Tdv/Fi17OUrN3918zsKeJ4NwC3ufsO8MdmdifwLOA3l/1hJRaYecDzDEV1PTsB8ngDcBZKOQH6/ONxFqDUVrNCEWigxkEft1/HolRxV98pg8ga9Jz1+GRwWP191swq4KeA5wF3Ae83s9vd/aN7zH4XuN7dT5nZPwB+DPiW7rnT7v6MVa7pYnLWLzOz7wDuAL7P3R8ErgPet8fmru6xz4KZ3QTcBHDd0TnVbHnOGvQvvrvJ20A8G6jOQikJuICzEHIqQqSqX6u+awygf4dB/hz2vC0PxuNYQBnFIoIh5ElX/tkeZWhdRAZ/FnCnu38cwMxuow1GHyFrd3/PHvv3AX931YvYiwsl69cAP0KbvPsR4N8Bfy8ygLvfCtwK8GVXH3ETc9aIX3wDeaO8m/6lC0V1kSh4ZIqBNHchZyF681cchuhr77sYrhRZD0GJUNF3DraUE6LPv3olZIyR9UUUmF1tZnfs+f3WjpegDTI/tee5u4Bnn2eslwC/uuf3rW7sGrjF3X/5Qha4FxdE1u7+mTM/m9l/An6l+/Vu4Ml7TJ/UPXZeGKsvMAO9stTI8rjy7NnkkCryQZsUgxiG4jAoGEJuu28VIoIpF15ii9fqhyyOC9+6dZ+7X3+x05vZ3wWuB75qz8Of5+53m9nnA+82sw+5+x9dzDwXRNZmdq2739P9+reAD3c/3w78vJn9OG2B2dOA314+oFPNha1b0chD9DplQiHwBa0C643klkPR+rgUAxVFnAXKbBsql4pQ549d/yE4DCpKOBYRlCLrPnPhY4ysoch7IQWeZva1wA8AX9XVanXr8bu7fz9uZu8FngmUJWsz+wXgObSSwV3ADwHPMbNn0MrgnwC+u1vYR8zszbS6fg28dFkleDsJmFANbhWhQ8bl3G6hJhtFyDLgBIxNMVBxUJ0F/bpGJfsCBFygxgGCtQCFrpeKvnPWRZyVMUbWFHmP3w88zcyeSkvSNwLfttfAzJ4J/DTwfHe/d8/jVwKn3H3HzK4GvpK2+OyioFSDf+s5Hn7deexfBbwqsoh265Yo16bAzVcltZE5AWNRDELOQiHFAApUikZukkm/BhEUcxjUMQsVd/XvWATG7TlnXUIFGWVk7bby99jdazN7GfB22jvu67tg9JXAHe5+O/BvgEuB/9q9F2e2aH0x8NNmlmld8FvOqiK/IAyigxlokTUEHL+oDB7ImatrCH2AxBtqLLIfl2Igj5ljkVpINVCQykRVpdSFEnULUKhyvIBjUaoeAvrNWxdxQkYYWTul6l38bcDbznrsB/f8/LX7/N1vAF+66vUMgqzNnCTkrInIqpEPcoDUQgeJREhNVAyMQGQbUAxKOQHymH07CwSjxRIFZgXVBWnMaLOXEjn2ARy6ocJz6vWAjlLqxhjRd0piHRgEWWOOzQTvPwe+GIEPsqnJL4bhBJRSDFQcVMWg1/QCsZuvlejjDrFzgQvULqiIOhahHRTyoGVy8RGs2gnp+3SwC0Xf2/jWgYGQNVK70ZAnGSDgITgBKobgLIxJMVBRUlmI1QP0S2xForWeVYgISigWUI6sS12HUaFAznqIGAZZAwg3dQsUl1mEgCNFU1UkUhA97xABT4pBCcWgpLMQi+7F11WqgUrP6oKMyNbICEp1WxuJczHGyLpUznpoGAZZm8sFZjJSrFpWdgSyYax2rZNiMAxnoYRiAHrNTuQaWKG8vTxmz2eKt2voX16Xxy2VX161c3HwOW+0GARZG47NRAKUPfoIUQVsA06AjECUElEMijkBk2IQ25Ugmx5MZ0FFeP94z4WOoXFHI6+PL7KGKbJeHywgcSc9qpVlzRBPrZ4oQqpCxFko5ASomBSDYSgGKko5CzKCUvEQHAZ53EKOxapXO9YC84ms1wn1II+I91+JX5DIGx1wFkI3n0kxkG0H4QSoGIJiIC9gPM4CDMNhUDEex2KEkbUbedq6tSaYY2rjBnkTRgSr74oGQWdhUgx02yE4ASoGoBjIQxZ0FhT7aN1K3w5DiCxLfL/12Vso35sRBqhOIed1YBgGWYNUDQ76/tJiSCW218ScBdkJAF01mBSDlW8Hg6EoBuq4gc9AqIFMoIBTHTIbkc9MCQez1KlfxQrnhO/4KNuNMsngw0QJ6SsIU4itlKcXdhb0KncVB1UxCDkBshOkDzkpBsHtc/Kgq3cWILh9LvT9CjhNqz6oZ6ScN5H1umDEbmp9Qg3sCzoVRdQFtRtV1FHoucbAA9dKdgJyolhU17MTIB9+E4jCx6QYxEhVNi1YvLjqrVv9B0Nh+NTBbMK5MAinor8vlKWmTEvKEmoBwZOJCqQMPFsRJ6BIpOZW5P2ypDttpZwAtZFRKAIPqWfa6yrlLKjnKoyR8hybIuu1wQlErCUXMhL0fg0KtI+MOgEiYgWJhVIGI6obKFI8WNIJUBBoZBQqVIqcFDcAZ+EgF2FNZD1ERBTg3kntgKLEdc0USR2UShn0XjcQmV50AuIqgIqCToCCwPtViixLOQuRQ1Kk1zZGGZxJBl8f3PB6uZuqbu/aM/CFred8GJkDoPb67d0zLXZdC/V6LuAEhFSAAj5I1AEISbYFnAAPXINQKkCdv8CHNpIygEJOwAjR+/1rDRgGWYP0AfVcxaIv8csccwIKeZ6FyOowfIjPiwJdVNtxe1YBpoLAg6kCUMgJWLnhcOB+OO5zwyBrB29EmSrSuF6NKiNOQMSb79sJGJkK0DtKyfvy/KuXYKNqVJGmQ6HvzOqnjzgAAFbgGhxEFWA4sEkGXxfcDV9oS1F77IZyTynLuzsi48YOsg9UOKs34J4jxXbcMsOOBiOK7Ml2Aamm5RiVvA+hHL+8hiE4ABKhjTNnPUXW64IbeVdbikqWnvQWpjRJL6yIOgEiIopBESegSMoAev/yj8lZSBQhK33+QsVVgc9M35F9uwhVtQh8Zwu8sVEHQCL3kXLeRNbrght5d0OzNe1Db8n1FqbimOFxIzepkSgGHnFsoIxiEEGhKvNDjyEQu5qLjq61QEX0WOT9MVKeM1WDrw3uRrMzl2xDvXtlUvWYE6Ai4CzIZBkZN+gs6MeUFlIMxLqFsLNQTDVYMSanIgT58J9IgVmpfc4FWtmGU3LS9Zo+g0PFMMg6G/X28sjakmMmLjlCKMnlLU6WsvzFK+EsRMYluawaWHL9axpwFuQxI84CyO/vIJwFFcWKFw83ikTrUKxuoNfIfowB6lQNvj64G/WuGFnL0aqes7YAUaikDmCzgApQyFmQCTDiLMwCtoWcBTmqirxfJeoRmuC4CszbHQwqeo7Yx+RYFCN2FdH3So3uR9rsRMNUDQ6AmT0ZeCNwDa1Gcqu7v9rMrgLeBDwF+ATwQnd/0NpmzK8GXgCcAl7s7r9zvjk8J+odLWcdImuVgAJfkFTpX+ZUlyBrXQUg6fJ6yAkZUSqixFqjefhi9QgqCux0iNz8x+RYjA7F2pOOB07bH/ygQ4msa+D73P13zOwy4ANm9g7gxcC73P0WM7sZuBl4OfD1wNO6/58NvKb7d1+4G4uFGFlHIlARyXQCzAHyy5FO+yHFoIy6INkFUxH9OwuBXQaF6hYi6kJkXG1MXYnx8BoKVDgX6KNQFH06FweUfC8EJWRwM3s+beBZAa9191vOen6TNpD9cuB+4Fvc/RPdc68AXkLrKn+vu7/9Ytez9E7m7vcA93Q/HzezjwHXATcAz+nM3gC8l5asbwDe6O4OvM/MrjCza7tx9pnDWAjV4GY5dlMvENFE5k8BUknqWoOyrnwNIjJ4QF3o07GIzh+tc1DHlR3HQpJ9kVRIlKQOe8Rc4pCayJieJPtc71zEivrDqmVwM6uAnwKeB9wFvN/Mbnf3j+4xewnwoLt/oZndCPwo8C1m9nTgRuAvAk8E3mlmf97dAy3vPhuhnLWZPQV4JvBbwDV7CPjTtDI5tET+qT1/dlf32GPI2sxuAm4CuHZrkx0xZ61CJb8oIkQxhHHHhBLecWRM9QsfGdPd5MMWctaP+lPtshtZnd/1+ZtAvrZudIVpIUrm7vr71XjSX1fgujaBQzQakVhz4LhHda0AtWj74ENvlcccDoockfks4E53/ziAmd1GG4juJesbgB/ufn4L8JNdGvgG4DZ33wH+2Mzu7Mb7zYtZkEzWZnYp8IvAP3b3h/eeE+zubkG2cfdbgVsB/sKlV/qfHbty6d9EPsgQ+DIHPNTIF7QO3NDUm1/tCVUpbDzJBcaLrN/QFuJaPWDbuJHF17Vwk6/BjrpWb8dV0Dg04oWt3Wjk9wv5GtSiXXbk+VtbUTLXd8SRHdTyQfX1R242OSKt029fGijTxyeJZ38f2x2ftB5x3M7C1WZ2x57fb+14Cc4ddJ6dzn3Ext1rM3sIeHz3+PvO+tvrLmSBeyGRtZnNaYn659z9v3UPf+aMvG1m1wL3do/fDTx5z58/qXtsX2w3M+58aDlZu1vQ89U91AhRqFiIToAT8bx1jzpy849cA/Xm70At3vk8MK5KlNCSmkoU6riZCKnkwHXVSUW9BO6x1hkRYjvsWlCEHlSyhNh1NXXcoMMyNlxgZH2fu1+/6rWUglINbsDrgI+5+4/veep24EXALd2/b93z+Ms62eDZwEPny1cD7DbGn5zckhYckX5WTT7R+SMRjbqEHCBgp9Q10OyiEZV6P1GjSogRYN9kWYooA7vdR4VUoAK4FAFHomWVgEMnmgbWOkbk1X8WlKDzjM1d1lbdPo620CwcsCpQIuuvBL4d+JCZfbB77PtpSfrNZvYS4JPAC7vn3ka7betO2q1b37lsAsc4Xes5HckucH+KkFrEtsSY5QhYJ9VS4656zKhtiQh0ItUyiBJ1n1QVJeoSJKy+/jFSulOk3uX9wNPM7Km0RHsj8G1n2ZwJWH8T+Cbg3V1K+Hbg583sx2kLzJ4G/PbFLkipBv919n8Pv+Yc9g68NLKIaL5QRYRU1WFDRFVEVvVeyTo6rkpqmTYKVW1XPT+Mi1ijeVgFQ4i+IiRcYrUHOVpO/b+9hbD6pihdDvplwNtpt2693t0/YmavBO5w99tpFeef7QrIHqAldDq7N9MWo9XASy+2EhwG0sEsAzvqEa7qmBECDuZAFURItWSxjn69xpUvleYP2vdNwBEMgVhVHHYCjo676mi5HTNgPEKU2Unib6NVivc+9oN7ft4Gvnmfv30V8KpVrmcQZO0Ou8JdvSipqVE4sShYnl8bsrNffQQ6pqg2gjER8BDQdx4YVu+IjImAQb9eEQK2AyyEO/1X8K8DwyBrYFdgwL5J9ZE1yLZl8qV9E6uKgxzZjgl9E3AJFWAi4AgB6+OOSLB5FD4d5LE2ZI/I4AcvWo2OOwRiVTERcAx9E6uKUtKyiomAY+MmRkrEIqaDPNYEx6nlquF+o9USc8MwJGMVEwHrKEG+MC4CHhOxtuOqY5YjVhXqJdBf0zgxHeSxRqhkvWpShf6jWpgi2yGgFLGqmKTliYBh9QQMsdc1YZgYBFm3++TGkYeFKbIdAsZErComaXl80rI0f2TMAbyuscGn86zXixJdnlQMgfoOKgEfRFKFKbKFiVj7fl0lovWxUl6kqdJYMRyy7nmPbd/om9SGgL6j1dC4AdsIsa56/r5l5XbccRBVZH7QX1ffcnloDSO9DU056zXBGR+5HlaU/EqMKVotMf9ErBOxRtZQJmc/PrQtmMe48hgGQdYTdAzhI9k3qcJErO24K24eUnAr0FTgpaPPcYdwfwkj0H9jzBgEWRsj/ZD0gCHIuhFMpKpjimoD8+um4de16rd2CKR+kAvMoMipW4PDIMh6COi713IpslRRqmBJHnMApFpie0vfBNS3BA5DeF06+h637/nHSHmFTt0aHAZD1oeZLEtEn1AuAlUxBFItEVFM0WrJ19XfmNFxh7CGlY87Ss6btm6tFX3vGy2BMZFlu4ZVzz+eSC26hj6j8GG8/n7HPfSkesZ2xaW5Y6W8Q5CyHgZZG6sn1lKRcim5Vp8/Zt93EZKKIZDqmF7b2Ehl1eON7fVHSLVEjHGQc9ZTNfiaMRtAZKlgLNEXlCMUef6JVMdHKgdUspbHLESqpa7BqucfK+VNR2SuCUaZL74+f/9EoWKKQGOYSHVcpDqmCLR/x0KHmXpdxykoTwVma4NRid+8iSzLzD9FoP2TZWTcvlWjsUWg4yHLUvOv1m5IcJ9k8LXBDGYFPkwHNQofE1mqGBOpDoFQhkCW8vwB23LfmXGQZWj+4GtSljBWyhunHhDDMMgamK34LjEmoozgoEago3tdPcq1w3j9gTWMjCijJCitYeUjxu8vq64cHxKmyHpNMMpE1iqGcPM7qGSpYkykOoj3NTCuigiplnNw+yfKvgvXVJS4F46R8pypwGx9MKiEb/9BJcqSa+hz/iFItRNZjoss+9xjDOVytn1/XiaMH4Mg60hk3Xc/3L4dhr6jyuga+nZCSsm1YyHLkte/b7IcEwGWadG7+jHHWGAGNlWDrwsGzFf8aR4CoYyJLCeijBFl3znI3rc4BWwPMgH2Gd0WcVYKjLkOTDI4YGZPBt4IXEObHrjV3V9tZj8M/H3gzzrT73f3t3V/8wrgJUADfK+7v/28cwBVich6RPlKFUMoAhoCWUpzB+37/mxF0DdZxlrprnz6UTkAY1rrGOuqp4M8HkUNfJ+7/46ZXQZ8wMze0T33E+7+b/cam9nTgRuBvwg8EXinmf15d2/2m8AM5kn7kAwhYpbGC9iOjSj7d0IKKRa6aWD+Mu8tjIcE+3YsomuQx+w5Z1ziezhWystrfivM7CrgTcBTgE8AL3T3B8+yeQbwGuBy2sD1Ve7+pu65nwG+CnioM3+xu3/wfHMuJWt3vwe4p/v5uJl9DLjuPH9yA3Cbu+8Af2xmdwLPAn7zfPMokfUUVXbjBtagzx+wnciyd6Ls+1pFELuuZdbQNwkVe12rHrfvC3WB6MFtuhl4l7vfYmY3d7+//CybU8B3uPsfmtkTaQPdt7v7se75f+7ub1EnDOWszewpwDOB3wK+EniZmX0HcAdt9P0gLZG/b8+f3cU5yN3MbgJuAri8ulSPrOW1ioaUI8q+t4CUIsq+o6+QutLzWoewhr4rvCMYDakF0PdZ9aC//jFydU8dzG4AntP9/AbgvZxF1u7+B3t+/lMzuxd4AnDsQiaUydrMLgV+EfjH7v6wmb0G+BFap+ZHgH8H/D11PHe/FbgV4Imbn+MqWU9kufobT0n5dUzR4lik0nguvkTVdv9ReAR9b3MaAmEfZFxggdnVZnbHnt9v7XhJwTWd6gzwadqarn1hZs8CNoA/2vPwq8zsB4F3ATd3avS+kMjazOa0RP1z7v7fANz9M3ue/0/Ar3S/3g08ec+fP6l7bP/xgfmqi4sGQJQHVVbtO1KE/knwsBPgmNYKA8gvj2RPtI2wwAwuuMDsPne/fr8nzeydwOee46kfeOzc7naeN9jMrgV+FniRu5/xK15BS/IbtEHry4FXnm+xSjW4Aa8DPubuP753AXs8i78FfLj7+Xbg583sx2kLzJ4G/PZ550CvBp/Isn+ynIhyIsCDKFfDMCLgPq/BKGVwymzdcvev3e85M/vMGQ7syPjefewuB/4H8APu/kh6eA937pjZfwb+2bL1KJH1VwLfDnzIzD7YPfb9wLd21W5OWw333d0iPmJmbwY+SltJ/tLzVYK3L0ivBu+bqMYkq45NLh0LAY4p+huTAwD9kzWUafZSAkUamIyRrWnz1mvG7cCLgFu6f996toGZbQC/BLzx7EKyPURvwN/k0WB3XyjV4L/Oud/Ct53nb14FvGrZ2GfQRtarJ+spWhwXUfbt3EQwJiegHGH3LS33On3v0noJjJSryetf+S3Am83sJcAngRcCmNn1wPe4+3d1j/014PFm9uLu785s0fo5M3sC7SX/IPA9yyYcSAczZ540IaPMtqVI0Vj/N+m+19C3YxHBEJwQFaXI77CTWt9OBQxDMdAwlnU+Cmf9+6zd/X7ga87x+B3Ad3U//xfgv+zz98+NzjkIsob+I2sVfc8/hEix7+sawZgI8CCT2ljIqu/3oBTUz+tYI+seZPC1YxBkbQYzMbJWMYjq4gMbhZe4VisfEih38y3nBPRM2L1XTfc6fQhDiNgnAFgfMvjaMQiyhvFEoX1HoNE1qJgIeCLgkphIeEIx+BRZrw2f3D7GTX/w3/tehgSzIWzumDBhwoQYjOqzHnMajOqRfxf18R5WdnEotXVraBgEWUNN3dzf9yImTJgw4ZDjvLtsB4t1F5j1gSlMnDBhwoQJEwaOgUTWEyZMmDBhwoXhEATWE1lPmDBhwoTxot1nPaIKxgvERNYTJkyYMGHUmKrB14RZuoQrjnxJ38uYMGHChNHhzEFOZ+9Ucc+YJR496Gk5jm1/dKVrWxemavA14QuObHDrlz2x1zUcVBnlAo+OmzBwTO/rhBL4Bx++s+8lhOFMkfXakCxzycZ5z91+BBFSLXFD80Kdcvp2FsZ08+/7WpXCmN6DMeGgfl4mPIopsl4TLDmbmxpZR25oqq27voMt536dhVLjlrqh9U1ApZyrEhgTqfT9vkbw2a1AVoMxvV8qbIx11X449lkPgqyTZY5sbS+1czeZWKOkqhO7Pm7vKkBo/tVvuY+8B+0a+rv5lZxb/RykQkso8tpKrXVEzlXECRgNsY9kmXvhTFu31gZLztYRjaybRv+K5KwRkBcj9tVH7CWUhaiteuOpAnezKKGUcW7K9AiKOi2rREknZCzR9RCIUnXE+r6m/V+pC8MUWa8JljLzI2LOeqExgHvSSTXrBJzdcNUJCETrUYdhlXatbf+pgL7VhRyomo3Mnwr4AOVSLP02NSzh2EReUd9k2fcaRimDMxWYrQ0pZTaOnl5q59nwDZGss5HFKDxClt5ESE1fa8RZUOE54LCExj2YjoUqBPTtgJQat/1slXFYVEQcm8lhKYD+fZUwpoM81girnLlI1nkhLtkDZF1XOllGyFqdP0DWZD1vH3JCCsjgqgJxZn59DY38ulQpvlx6IXbjL3GjVtdbMgLtM1qMy+Darb/Ua1IdlhLzjzWynmTwNcFSZnapSNY7c2lM90SqRVJrKvnmn2v9knmtR/aqExCKliMRcMAJKeEsnLFXEFUXVj1/xNaz7vOXkMzjpNpvoWEJAkqFxqXguAqK5OJHGFnDVGC2PlSZdNnyAjMypI1aGtLrSiagvDuTb1Jpod981fw6xKJwRAIqoQJExy2hGFSBcaNkqaKUulDENhStrz6qNBuPXF1Kgi4SBU+RNdDJ4ONbdhjDIOsE6ahwk8jg1a40pLvhuxoBpc2FHAXnxQzEL7RV+uVNEclcJMsUiMJTHXBCCpB1McXATX6/Ijf/NBJnoV1DGYehxJh9OxYpHfKdBmOMrH0qMFsfksFRQd6uG2ymfUGtdrwSv8xNwvJCG1eU4SO2nhNea4e+uydclPfxpOesK/3QeSugAkT6F4echUDlfhFiDTkWq3cWQHcYhuAsqInzIeTMY07j6tnE3ULbIxWMMbKGqcBsfUgJjh5dbtfUsK1t8SI7NtcIyBYZlSus2tWjVdFZIBsuFs61kbVaOKcSVcABAKwRb/7ZoEBkbVUkF6/fzSLFeCWi1VJReJ/KAgxDXZDnj7yvBeT9sBMyRdaHBksZwsy2gF8DNjv7t7j7D5nZU4HbgMcDHwC+3d13zWwTeCPw5cD9wLe4+yfOO0lK+CXLydpyA6q03NQw06JldheYmvRILnmfnsFMG9PdsJkYWdcVeCBvr96o1Sp7IItkTQ4UmEVUgEguPumRgrzWrJ9kVKLADmI1BiqpGFl3mEB3AqyMDK+OGnoPxO8s9O8sQBmHYWyYctaPYgd4rrufMLM58Otm9qvAPwV+wt1vM7P/CLwEeE3374Pu/oVmdiPwo8C3nHcGkaw9ZyxpNymrFyDmt5lVoHr/SRvTssNM+wRZdlxcqs0z3ohf0CrLjrLPGlmytkZ0LLIesbsnTJbsDcQo0NRUSCEV4JGxFQRu1KojCNGccaDhj7otrmfFgBRTDYpsdZPXqjtMsHqHIfK5GhLGueoYlpK1t8mWE92v8+5/B54LfFv3+BuAH6Yl6xu6nwHeAvykmZmfL2lTzciXXrF8tTmT1L0tdQ0zTTK33VlrryAlndi3RQbOjonETu3t/wKscj1SSiqpJUzeZma4vNE50BkuINnLKYOsOwCec0AxiJBaoCBQfL+AQN2AhSJLWd4vFFmHospAzlgeNRSxl7kGqoN70LHuyNrMrgLeBDwF+ATwQnd/8Bx2DfCh7tc/cfdv7B4/pzJ9vjkl7dPMqm7ALwR+Cvgj4Jj7I3rsXcB13c/XAZ8CcPfazB7qFnTfWWPeBNwE8OQnbpG3Ll2+kBwogqp3sZko7c50srbdWSAKF7+gOcOu6CxUDabWuC0Cx9GIhGJZj+wtm1zkR6SBS1XpUbDo2IAuLYck4JJOgIhYkd3qVYBI8WCR7nilts+VchYiBCwX5IlK1Fgj6/Uv+2bgXe5+i5nd3P3+8nPYnXb3Z5zj8R/l3Mr0vpDYzN0b4BlmdgXwS8AXKX+3ZMxbgVsB/vKXPE671KkiX3K5ZNqS9YY2bDqpOwKByFr30LMsr1M37f8KUoOp90k5t+uwK9pmk1MB1HrluAXy0Dlw80mR/LYa3aeEXKtaJ0zueRo4pEa8BlZIBYhEoFYgAi2hFrTjDsAJ0Beg2Y0wUO+p3egNwHO6n98AvJdzk/VnwdrGA/sp0/siVA3u7sfM7D3AXwGuMLNZF10/Cbi7M7sbeDJwl5nNgMfRFprtj2pOc9nnLl9AbrAsRqD1Dikd12xTanPcq0QgT2e50aPweW6L5xTsLgIqgDgmAbLMumRP1UbtCuScPZAiN2oxF09Obd5cGjQg74du/kkiQasC0WokrzsAFUCuxwhsITwztmRXyAmIOEyrn3+ckXW+sND6ajO7Y8/vt3ZBpIJr3P2e7udPA9fsY7fVzVEDt7j7L9Mqzfsp0/tCqQZ/ArDoiPoI8DzaEP49wDfR6u4vAt7a/cnt3e+/2T3/7vPmq2lvUj4XZHDAk+hfLE6AaOuzDazWIlu5Bjcg2beRdaBwLhLVlZDsk0pqkVw8uCjZW0Dabr8jqqn47uYsd4/ybJhKQIFeo15X8odRrxzPehRsJqsAke1zsgoAeirEEqiFhoEmOlYRqgdYNUo4C2MtLr9AF+M+d79+vyfN7J3AuaLIH3jM3O5u++cPPs/d7zazzwfebWYfAh66kMUqbHYt8IYub52AN7v7r5jZR4HbzOxfAb8LvK6zfx3ws2Z2J/AAcOOyCSzXpJP3Ll2IzzbxI48XlgzMLyWbRtY228Rqcf82XSQsIIkE7LnBZLLcBFEFsN2dQvl1UYXIWZfsK9cl+5nrupdaiJWJlffWgdzuqt8DkEmtHTZwKwvk4uU8aHT7XETiV+avdBUgmgoIOQHSmP2mDMYYWXugNCc2rn/tfs+Z2WfM7Fp3v8fMrgXOSWDufnf378fN7L3AM4FfZH9lel8o1eC/101w9uMfB551jse3gW9eNu5j/ibNyEeuWm6oRtVnoEbrtI6AhFzLZN3aL7cNjVcv9Jt6SnrhnL6CGLGrVfZ1o3/j6kYma12yB9SWqxk9BPGAY6FG9uivy7OFbEm6E2Jqu89A9b6c488WCgNVZzjUZCTgMMlKTISACzhhY8xZg+PrdzLOKMi38Fhl+RGY2ZXAKXffMbOrga8EfqyLxPdTpvfFIDqYWZpjR58s2q5+yXl2BMRceAY9b67CazkKt3ohS/bsbsNMLB0PEHCscE4cdxYg9mQxYleQY8QuS/Y5ogKIdiA7FgZy33sLVINb1pvYqNsCQV8rgVx8qwCI1yvQyEdWwyioAqjzi07AGKvBe2qKcgvwZjN7CfBJ4IUAZnY98D3u/l3AFwM/bWZndLtb3P2j3d+/nHMr0/tiEGTtucZ3/my5oc3w2RFpTLMZVm1JtmmmReDQfuVd6SPuNVmMmC3X8v3c6l2s1gg4pSqWO1cRIfZdtT1sgNhTHZCW1UjRY8SuFrRE/LoCkb27YWrxYKQQK5K3DygGcrTqgd0DgTu5mwU+3wGGGJEKMEasuxrc3e8HvuYcj98BfFf3828AX7rP359TmT4fBkHWeG4LwpbBZtAIR2nSSusu5qyZHcGSRuxWbYHoBMiboeptvXVitYOJzV4QyXrVsv6j42a5aMrqBWTx/TJRWQB9SxwEcvGuOwuVHllb0m3V/eOG6/n1KnB8kTomxIgi0EpWLtwLdKeLyPuhvfaRegTVCSjgAIwxsgaKHJQyNAyCrM0zaffkUjtPM3zzcfrAST8hS+23jc0kKd5zDfPLtDGrI3pkPduG3VOSbSvZLydXJ6bAyghFywX2r0cQaNxBzsH8emBstTlNRLIP2MpRqFmgO14gspfXGrRVFYMIWUXy+9HoXpq/hAOgDzkU9LTPeu0YBFnjGYRqbEsNatW7zzblPDTzy+QtpkmMqi3NSNUVkq17TVa3mS2O46q8nyp81TJ4bgIHKGRs97RmPJvLVe7FiF2N2D3HZHj5kJhIoWEByT4Tiuzl4xQjkX1ToGgqUJEfydvLMnwgDx2S9wNb7fRGK+OMUKfIel3whur0seVmqSJvatGq1Tv4hng6Va7lSvOsOgBpFsqFq7ZuM9y0Zi8ZMDFtIL+uAMLyeoEoXJ8/WDhXopd8JL8egUrshhytWqAxmwfkfV0xMNnBttwEJOtAF7lSjkWh6F7CCCNrmCLrtcGamnTis3qgfzZSJVdC+8YRXNw77RuXyFu35K9RmpUhdpthG1dKpp7mWjFcBLnRJftmJ3BK2q5sq+biw9gNFFdFtq9F9lmXIPaIrTp/7bpkHyA1NRtF9pBkT6UWrq1+D7/nhKmRbRVruLNyeX+EOeu2Gnx8645iEGSNO2l7uVzqKekSbL3ANzS5OHsNtbjPGrGLWoRLcqAYTsyZAzC7VL77uXqXjETgeRNMy6+TKrmLW4nI2nKWHbF44dzqc9ZF9rpn1yPAFCD2AGRpnQCxE4jss+uV9gUie9DbiJoF8/bKmCOVwQ8DhkHWTY09fGypmaWEi3lNn83xDY2AbWsXFw/9yLnBRVLJl0hm7ZY00ZTZEUDPm8tv8caVMmHLVe5NoMq9rrBKfL/SqZjEriAiw5cqnIsUDKlF7hWx1yVH1g2yZyG3p816pWNwX7ws2WfkNIMc2VfgoSp39XoFNGt1+9xIZfAemqKsHcMg65zhtBCBpSQf9mCzmUzWXi9wtXlIbvQIUMVss43uFTTbcoEZ88va7W4CrNqSv6eyvF9tBVq+bktFhmegOhZ6MVyjy/D1bpn8eqkT3VRY1tuzlqgboAoUzmVdro7k4gMvSY/s0beDwcoj+3Z+tW5hnKQ35azXhcbhIaEQKgGbYkixMcM2xQh0d0cma/lkqEh3o1TJROUbR/F5QNqutCYyBIrhTLX1Wo/C00w+pCWBnLOW7+eRSD1wSpuXyq8HUCS/XtfjInbVvQkcEhOS7GVLVh/ZA666rSOMrB1HT2KNF8Mg69poHlxOlpYydkTsdT2rYVOM1LY2sA2RrMXe3J4qndhnc5kscrMjF87lrcuhFpvISFaEiuE8oxfD1fopaSVavnqui0ThVi/k9zaUMy9gS8660xIh4LrWFHMPpBdyLlM4Fyo20VFOshfnP8ixp08FZmuDZyOfEiRrc2xHbOFZZUzcumVHAl3Bju5INxRLpkdfszm2q5Fq2jpK3hC6vdFtXxOr3DOEyFKaP9Dyldmlemc4m2kyeKgYLlDlHkmFBPa6W6rkJjZqSuiMrTR/zvq+/Dp4oI0KeUtcQAXI+n7kmAoQ2Zoo2kUl+wixq/OPEFPOel3wRHNaIJXkpEr1/APEfrrBxKPu0qmF9mVKYNtabtNmFSZUwwP41klsS+yPHsnFq0iVfN+Rc+vQVrkH7FddDBcj9lo/HEMk4DNwxL7viK8tN/L913MTaMgBrt4+gtdAxpiIXZWs+87Fj5Cs2w5mE1mvBZ6NZlusxhZJ1apGlp4itr5Qb1CZdHqBcku1+S52qRbZ2+YMu0TMxW+fBrUiXq1yD+Rg2/PH1WK0I3Jkjc0wsXDN1ZaveaHn173Wt8/VM71wboMyuXhVBchNIBcfK4aTiD3SmCaCnHW2ihK7ou9H2tPmQMe7KLEfYExkvSZ4NuptkVTEyNqSy03pI2SdZLJ20o4ow6eMnRCrmzcX2KYog192Eja09c62T4lknbCrtSK/vHFErhzPG0dx8fxx27hSr3IvUAwXsgWdLHfR91mrCHWRC+x1r3f1mgx9BcGctV43IEPNr+dA5XykcC9E1kFiVzBKUu/lPOu1Yxhk7YldRQYHkhpZm8vn6KYq68Q+a2TbJFZtW3JMtE2nG2ym3YDTiQWI16s6+WmkI2/NmJ1afugKgF9ylHzFw5Jtc+mV5M3LJdt8tJajcLXADZthYhQuN5AhkF8ncJhKRFb3Wi+Gy027LU2xJVKUqG+5jBTOyQpPqV7yqgwf2RJXktgVBE7yGgomGXyN8GzsipF1JX7oQ5G1ZTn3EyH2FInYVbKuGnkvZJrX2Ey7XvnUrjSuJScJDWwAbPMBqivvlWyrK68kX64R6+Lqk/j8qGSbNf6HNJejcCMgr9tM3pBbosqdHAjVAw1/Irl4mdgj+XWQD34JEbs4P4yQ2KX5NbNBwSBHNsiPFKMja52AXc9Zm07slVrgBlRiBAyQZnoUrhbZRRyLalMja4DqlHjqV9WQHtDytenovaQjn5ZsN5/4GVwsstt9yklJMvfZJvnyPyeNGTn/nLkeWUN3qMwqkZs2b66g3gH1OMszY68UsWLIUoVzKooQe4SAo8QujTlGtp4i67Uhe+L0tihrqlFlgIAjB65XoqwMkAJHHkbkfZWsq5T1yF51FsyZnRQjmuRUG5ptmteyujC79zQ2E6R4czY/8x5tP+7WJvUXPF2av77sc8hXfL5kGyF2r8R8KR1RKMQeyYEHmvNQQt6PINJkJQdk+EKSuS7vB84/jxK7ZijaDQfetUU56BgGWefEqW2x05aISHehCFmngG1kXNkJSd7K9iuev0oBeV+tBUhOVanyfpadkPm8lq/Bxh9r+9etati84w+0+S//INXniEVLT7gSv1TMhc/m+p7oXZFUc9YLrEKyasC2CUTroUNHAtumVr7FivaELhWBSyDviQ7ss5Zl8N1+u+1dKKbIek3YbWb8ybGrVjpmFo+Zg9h3LmO4OHbE12tEma69R+jzq7YL9ag9YCGO2WTTbd1YiDeU7UZzxbLD8YVmu8hw77Z2R30wb/On1d2S7bHmT9muj0m22bVzygGqJKaNSMySdqKMkUgm7vO2ChNj5pnpJ9pV6j5zq6jE25dRkcRG2qn7T4E6P8DM1bXq8yc32dbEiPn3t/+7ZDc0TDnrNSE7nBbyatljTfNKkJrqBDix9TbquG5y++LGTXZEFm7ya9sVSbVxZALezS1hKji+cMnWcT61OC5t69ixHf6UO6X5d/0E29vHJFv3GhdDpZQ2MFG3VonSpBL/M7a6Zm6k0NgKEhUpsIYS0A/hDYwZOXGjIJJA2OMTwc/0Bp/Iei3IbpxcMVl71DZAgCoaWVEz2bbJJq+hdj1XtiNGqwDbolK2yLAtvrCTdeaUWLD0aR5gx5bL25nM/XwS9+XjNrlmR4yAIcsEbDYjiQ1UqrSpR6uByDoSLSdx/3pCj6wr5jIJl4qW1XETKTSu/H657oREomWFgNsx1Sh8jHTNRNbrQnbjlNi+USWqSEqpDhBwHThDVpWAs+vE3rhO7ItA46SdRpPts8OJWvtinG4aHnItZ/xwOs6J9JBke7y5lyZrOVtVgnbPcsGUWZI7qCWb62QdkItVAjYSlWprSZahVTuAeUQGd7XdakyuLkHALbGrZNknAevjjpOqDweW3kXMbAv4NWCzs3+Lu/+Qmf0M8FXAmTvsi939g2ZmwKuBFwCnusd/53xzZOCUcDj7GWlZgXuM2FVSE3nqkWhZGdcD4zau2243LkvmD9e1VKTReOZ+0xqd7Ng2x+0BzdZPsGiEM82B3eYk2bWiqZzFI1XRJWOzWSBa1W0rm8lStJoHjhBwKFq2uU6WAQIukQcuRcBVoNR+FpDXyxC7lrceJ1lP1eBnsAM8191PmNkc+HUz+9XuuX/u7m85y/7rgad1/z8beE33777IbuwIZJ0JSMsei6xVCTgSrcq55QwLcbE7DeyKla0nmppd8WSgY/awVKTRWM1xNAJesM1OoxF7nXdoRGLNviPL0KCTcBIJMKWZLBdXNg9I21shslRgBMi6UNHWTB4zyQQMumQejYDVYqwIAUeIfdUEDJBMJPYR7rN2pgIzANzdgTPNqOfd/+djlhuAN3Z/9z4zu8LMrnX3e/b7gzayXv4hicjF0Wi1BFmfbrQFNA6nGo1UT3vNNhqpnUwnWYi2x7lf9k5PNw9Kdo0vqBtNBs++CDUPUREp2pqpLUypqCIy+IqjZYAZomNRkID1fO1EwLNAzLpyAqY7oEsg4vFRNdBDgZmZXQW8CXgK8Anghe7+4Fk2Xw38xJ6Hvgi40d1/eT9l+nxzSt8Ma7W5DwBfCPyUu/+Wmf0D4FVm9oPAu4Cb3X0HuA741J4/v6t77J6zxrwJuAng0nSZVLQUJWuRK1m4BwjYpYPOM3Cy0aTaBZmTQsEUwE7aZgfNdpsTNGhrUAnYyew2Ym9wz2TXcsvuWXYWkm3I0fIs6fv31Wg12TxgOyOJN/UKPQqX5yf1ngeOSdvatYoQcArIxaUIuApUzq+agNsxDzY8crb4anAz8C53v8XMbu5+f/lj1uT+HuAZ8Ai53wn8zz0m51Km94X0LfK2nPYZZnYF8Etm9iXAK4BP0x7sd2u30FeqE7v7rd3fcfXsGlfI2l2XiyPS8naTZdtTvpC9uBOm5WBrqzmt2rLDrou53XxKzu3uZp2Am6ydvQ2Q1S5XNsPEm3qVNgNkvfqq6SpA1hEZuhQBl6iEjhKw7gTotDKTt7nFcrsqIgRcBYg9QsC2YrIeY2Td09atG4DndD+/AXgvZ5H1Wfgm4FfdxZv3ORCqBnf3Y2b2HuD57v5vu4d3zOw/A/+s+/1u4Ml7/uxJ3WP7IgOnhQRvpiVWBQt3dsStQLs01KJndspOyx+Mk0k7yrJhwY5rtrXvUGctsq59RybLulk9AbcEKEqwkUKsgLQdqbBWiT1RhQg4tMWpxzxwdCtSiUIolYBBJ/ZoblefX7edBcaNELC6XnX2MZI1XPDWravN7I49v9/aBZEKrtmT2v00cM0S+xuBHz/rsXMp0/tCqQZ/ArDoiPoI8DzgR8/kobvq778JfLj7k9uBl5nZbbSFZQ+dL18N0LjzUC3shXVnR9gzC7CgZiES8I7tUJtGQKftlCy5nHbxeEhfsMiaw9V4LUfLTd6V1+peSzK0BW7oUQJWbWcF9iNHCDiyHSpKwKvOA4ci62BHrDERcJ/Sspn6rsachXatqu1Bpmu/UBn8Pne/fr8nzeydwOee46kfeMzs7m7n6dVsZtcCXwq8fc/DYWVa+RZfC7yhy1sn4M3u/itm9u6OyA34IPA9nf3baLdt3Um7des7l03QuHNcqATOZHbEHGxtDQvTiqt22KYxbdxtPyHnVneyFi27NyxEaTkHyDrSPSuy9SGlDc3O5lSibWVznawD25bmiKdjBcYtJUNHCrHmaNe1HXf1cvFBJuBVS8vJdKps7TU7w2Rb3bEQDQeE9jzr1cvg7v61+z1nZp/ZE7BeC5zvLOAXAr/k/uiNe08Ae7YyvS+UavDfA555jsefu4+9Ay9dNu5j/obMaZYXItXWSJ2rABbssjCtuKn2HRo5t3tKJrZFPiWRpZPJ4tGIkarpEAEXKNpqC7H0qmk1Wp3Zply0FamwnnuArAvlgdXINkLAaoVzvGhLQ6ncriotq+QbGRPKRLbJYnlzdbn6OseJHvZZ3w68CLil+/et57H9VtpI+hGcR5neF4PoYNZY5kRafohBJrNjWgTa+IJarESOkHWdd2TJRd225DQ6AYeqpgNFQJVGwEZiLpK1WVWkecfc1C1WqUgeOFoJ3ScBt2tQK6zHRcAlIluV1KBcZBtdgzT/WFlYgpPXXw1+C/BmM3sJ8Ena6Bkzux74Hnf/ru73p9DWcP2/Z/39z+2jTO+LQZB1puG0La9GdrJcCd34QibgJkDWauOOdtuSeDQhuUjRVjK9alomYBIz8XxmI8lkHekfPWOzSB54wzVpOXIy0syrInt854GvrkqWpaTlqmBkqyBZGVKrArZ9StugOwFjlcHXHVm7+/3A15zj8TuA79rz+ydoty6fbXdOZfp8GARZg0tRcMOCXbEQK/uCRiTA7Av5zdYJGLLrrS5VRIq2ZtXWyqumUyBartCl7YqZvNYN3+i9EEuNVqMRsL4f+GAScIQAS0jLEVk5komeRV7XiqVt0CX7EXI14GSx8HjMGARZZ284lbWmHLV4gEP2hRyttnlglawDBBw6mUksxEqbcmQ9T5foUWXgzOOoDK1g5rNQIVasecdqG2IkrMge3wrTyXJk0vKqI9u2EEyfX0XECSm1hjKS/UEm615y1mvHIMjacSlizZ6pxarpiAxdos0lQBLl4kjV9Cxthqqm5aKtQPtK2dZTKA+sRsFRAl51hXObM1aj1YNJwLHIWjYtEtmWiKyhjAwOZci6vV4HFRe8dWtUGAhZZyli9sA5wqAf4BDJ/qhdtkAv2ko2Yy5Gtu0WJzGyRj8YYsO0+ZMnedtQCjTkKEXAkdxuhIBn6gld9CstRyuW+4xs+56/XUOZymn5dRVa6xn7VdgMDe1pjFNkvTasWsaIVliriLS63EhHJTuzSi7wqpgHqqY3Q3lgBUYK2aoVztEIWI2q5pH2lQECPuyRban5q0DVVEyG121V9B0tR8k6CccVjbHAbDoic41wz9TC4RCRbUsRJNO7Z82royS5wlrMA1tiAz2yLpEHLkXAkT2+avOMiFw8D2wxihBw35FtRIItQax9y8VhouoxWi5Bqo+MXci5mDA8DIKsjbbIaqmd6VGwWdIroQOtLufpiLTFyEiytNwWbYkV1j6X88Bz35ALseY+123lQiydgBP63t1IJXTf0nJkfpXUzuRr+9zjW0ounhWKrFc9ZmTchBcj1VWvd5R87m0XyIOOQZB1ShtctvHEpXaNL9hptH7bRgrsMb5ELsSa2xG5e9aGqXuXKzmyjRRilSLgiLQcIeBIbldv3qEXIZUoWKpSuXFV9C0XD6EQq0S02rcTANG91so10K/TUNDTqVtrxyDI2j1LB1lkz3LBVLK5nAeepU1ZWt6wS2QC3HS90UiMrDVinaOfjBQh4LnYvKRUbreyiFwsEiWxm3SpcVdNlpEIeFSFWIWi1fGQ6oWMuxqbISJSdzRWDIKsweUOYhvVpZJdZXPmYmQ7ty05txslYIWCEom53LxD3+M7D/R6npla3gXzpEvberSsR6DRgqVVj1tSLl41sZaoGI7MD1BFyKfntY6FVB8ZN7AGZdhxcvW0dWttMKvYqh633I7Y0YRqp625b8p54E3Xt0NtitFywuQtRm0mXvtKqcVVZ3K7JaTlEhFoLLLW7KJRbUiCLRDVlZCWI9Fq3xLwYSfVR8cN2I5Q4lYxRdZrgmFSFJyItbpUpeW5bwSqpudypLYpSusJk4k1ktudB+4mc/Fb3+4x1saMRKAhZyH1m4ctSewqSkSrUZLQC9cOLllqcwdsC1WCt2MLY8aGHAimrVtrg9rC0kgccW3vcsWMuUjWUQJWBePNArndNqpcvbQ8D9wlVWJP6IVQpeTi2BYn3XYI0WqfUeiYSHUoZKnNryPiBKljj5GsnakafG1IVFzily21MxKbrrXwnHklS8tzZkUIOJLbVeXiiAQcImCzgAyt2ZWSi0sRcKlodUyk2rdcW0KqDTkLoXHLKAbymEFmldY7RrbGJxl8XUgktnz5nuREYtPVXteVXOE8N73NxqZKwIHGGW1uV5s/kgeuAgQYKdpS98IWK64qEK2WJNUSfakPagR6UMkyGgVL8wftlTXYSPPakwy+JiQ3jgoRcyKxoR5NaEkmtXlAWp4ViGwNk20jxB6NQMtEtmIEOIRoWbSLkupElqsny5JEWYLYh0DWioM30sB6iqzXhWSJS2x5frktxNLlYjW3Gilu2hCZIqFHoNHIWv1CxQhYv5mUye3GpF09si4TgRZpsiGPWI4oS7SkLFdg1j8BSmMG11mCMKNrGBemArO1IQGXJLErmChDz0wvborka+eBSuRIzjgmg+vRaoyANJQi1bFEoKVkcBWlosq+i5uiKEFAsTx8GQIs4YSAWGA2wtB6KjBbI5IZlwjMaqZXIlemk2Wp3O48rT5ajZKqvh2q3wi0lFRbrCFHjxJwSaI8iATYJ/ldCMaiGAwHDlNkvR4kg6Nz7Su9USi3q5JK5KABfT9yrAhJvaGF5OpI0ZY4ZpTQSpDlEKRlecxildjjIMASBVMl0fdnIIoDXWA25azXgwo4KqzEgJlKVAG5emb6F1+PgGOybiQCLUGWsTOPSxRtlcrB9k+AQyA2BQdV2o5gbFG4CvV1jVAFZ8pZrxFmcKRa/mEK5WvRpd3Itp1YIZa+1r6jyphc3D8BSnMXJJ+xEPBBzKteCPqPwscZsY4HE1k/AjOrgDuAu939G8zsqcBtwOOBDwDf7u67ZrYJvBH4cuB+4Fvc/RPnG7sy5+hs+cWOknWE1OT9uCHJOjJ/vwQ4lEKkVc8/FgkYxkdUfRNQ38VQfasAEejK3Xhe02MwyeCPwT8CPgZc3v3+o8BPuPttZvYfgZcAr+n+fdDdv9DMbuzsvuV8AyeDSwWyBp2sI6QaJcoxEWCfxDYEWXVMRNU3+UD/BNS3AxDBaIltwighkbWZPQn4G8CrgH9qZgY8F/i2zuQNwA/TkvUN3c8AbwF+0szM3ff9ZCeco7NaWnBs29DqSa1UrrJvoip1kyzSP3lEBBzFWAigb1KPYgiOUJ+QI+vC6yiDKWe9F/8e+L+BMw28Hw8cc/czDHsXcF3383XApwDcvTazhzr7+/YOaGY3ATcBPH5+lCMiWZfpn1ymG1QEJW5+5Qi4EFmOhADGduMfghNSAmNxbMaEsX22H8V6ydrMvpk2KP1i4Fnufsc+ds8HXk1bR/1ad7+le/ycaeTzzbmUrM3sG4B73f0DZvYc9cUsg7vfCtwK8AWXPN6PzharGhooWVhTZNjeb6gH9cY3FgdgCBjrtp0JyyGn7sb6GdhfuC2FDwN/G/jp/Qy6Oq+fAp5HG9C+38xud/ePsn8aeV8okfVXAt9oZi8Atmhz1q8GrjCzWRddPwm4u7O/G3gycJeZzYDH0Raa7YtkzpEVk/UQMBFFGYzX+58wYcLq4fianQx3/xiAnf9m9CzgTnf/eGd7G3CDmX2M/dPI+2IpWbv7K4BXdJM9B/hn7v53zOy/At9EG8q/CHhr9ye3d7//Zvf8u8+Xrwa489SD9/2ND7zpJGdJ5YcYVzNdizOYrsWjmK7FYzFdj0exqmvxeSsYY914O9RXX8DfbZnZXvn61k7xXRUeSQl3uAt4NudPI++Li9ln/XLgNjP7V8DvAq/rHn8d8LNmdifwAHDjsoHc/Qlmdoe7X38R6zkwmK7Fo5iuxaOYrsVjMV2PR3GYr4W7P7/EuGb2TuBzz/HUD7j7W8/xeFGEyNrd3wu8t/v547Rh/tk228A3r2BtEyZMmDBhQi9w96+9yCHOpITP4Ey6+H72TyPvi7674E2YMGHChAkHEe8HnmZmTzWzDVqV+fYuLfwe2jQxPDaNvC+GRNarzBWMHdO1eBTTtXgU07V4LKbr8Sima7FGmNnfMrO7gL8C/A8ze3v3+BPN7G3Qbl0GXga8nbah2Jvd/SPdEC+n7VlyJ20O+3Vnz/FZcy6p/ZowYcKECRMm9IwhRdYTJkyYMGHChHNgIusJEyZMmDBh4OidrM3s+Wb2v83sTjO7ue/1rANm9nozu9fMPrznsavM7B1m9ofdv1d2j5uZ/Yfu+vyemf3l/la+WpjZk83sPWb2UTP7iJn9o+7xQ3ctAMxsy8x+28z+V3c9/mX3+FPN7Le61/2mrlgFM9vsfr+ze/4pvb6AAjCzysx+18x+pfv9UF4LM/uEmX3IzD54Zm/wYf2eHFb0StZ72rF9PfB04FvN7Ol9rmlN+Bng7L2BNwPvcvenAe/qfof22jyt+/8mlnS5GRlq4Pvc/enAVwAv7d7/w3gtAHaA57r7lwHPAJ5vZl/Bo60JvxB4kLY1Iew54Q74ic7uoOHMaX9ncJivxVe7+zP27Kc+rN+TQ4m+I+tH2rF1Tcxvoz2160DD3X+NtmHMXtxA23aO7t+/uefxN3qL99Huz7t2LQstDHe/x91/p/v5OO1N+ToO4bUA6F7Xie7Xefe/07YmfEv3+NnX48x1egvwNbak/+GYYI+e9vfa7vczp/0dumuxDw7l9+Swom+yPlc7tqVt1w4ornH3e7qfPw1c0/18KK5RJ1s+E/gtDvG16GTfDwL3Au8A/gjxhDvgzAl3BwX/nva0vzNHKsmn/XHwroUD/9PMPmDtiYVwiL8nhxEX0250QiG4u9tBPQbrHDCzS4FfBP6xuz+8NyA6bNfC3RvgGWZ2BfBLwBf1u6J+YIVO+xsx/qq7321mnwO8w8x+f++Th+17chjRd2S9Xzu2w4jPnJGqun/v7R4/0NfIzOa0RP1z7v7fuocP5bXYC3c/Rtvl6K/QtSbsnjrXCXeYeMLdiHDmtL9P0KbHnsue0/46m8NyLXD3u7t/76V14p7F9D05VOibrM/Zjq3nNfWFM6eVwWefYvYdXYXnVwAP7ZG+Ro0up/g64GPu/uN7njp01wLAzJ7QRdSY2RHac3A/xv6tCfdeJ+mEu7HA3V/h7k9y96fQ3hfe7e5/h0N4LczsqJldduZn4Otoz1M+lN+TQwt37/V/4AXAH9Dm5n6g7/Ws6TX/AnAPsKDNJ72ENr/2LuAPgXcCV3W2Rlsx/0fAh4Dr+17/Cq/DX6XNxf0e8MHu/xccxmvRvb6/RHuC3e/R3ox/sHv884HfBu4E/iuw2T2+1f1+Z/f85/f9Ggpdl+cAv3JYr0X3mv9X9/9HztwnD+v35LD+P7UbnTBhwoQJEwaOvmXwCRMmTJgwYcISTGQ9YcKECRMmDBwTWU+YMGHChAkDx0TWEyZMmDBhwsAxkfWECRMmTJgwcExkPWHChAkTJgwcE1lPmDBhwoQJA8f/D/s/peYxyPkCAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 1152x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# note, this requires previous runs of the forward-sim & PINN notebooks in the same environment\n",
    "sol_gt=npfile=np.load(\"./temp/burgers-groundtruth-solution.npz\")[\"arr_0\"] \n",
    "sol_pi=npfile=np.load(\"./temp/burgers-pinn-solution.npz\")[\"arr_0\"] \n",
    "sol_dp=npfile=np.load(\"./temp/burgers-diffphys-solution.npz\")[\"arr_0\"] \n",
    "\n",
    "divider = np.ones([10,33])*-1. # we'll sneak in a block of -1s to show a black divider in the image\n",
    "sbs = np.concatenate( [sol_gt, divider, sol_pi, divider, sol_dp], axis=0)\n",
    "\n",
    "print(\"\\nSolutions Ground Truth (top), PINN (middle) , DiffPhys (bottom):\")\n",
    "show_state(np.reshape(sbs,[N*3+20,33,1]))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "D8qbYQpHZKni"
   },
   "source": [
    "It's quite clearly visible here that the PINN solution (in the middle) recovers the overall shape of the solution, hence the temporal constraints are at least partially fulfilled. However, it doesn't manage to capture the amplitudes of the GT solution very well.\n",
    "\n",
    "The reconstruction from the optimization with a differentiable solver (at the bottom) is much closer to the ground truth thanks to an improved flow of gradients over the whole course of the sequence. In addition, it can leverage the grid-based discretization for both forward as well as backward passes, and in this way provide a more accurate signal to the unknown initial state. It is nonetheless visible that the reconstruction lacks certain \"sharper\" features of the GT version, e.g., visible in the bottom left corner of the solution image.\n",
    "\n",
    "Let's quantify these errors over the whole sequence:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "id": "VoxYVPwjZKni"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MAE PINN: 0.19298 \n",
      "MAE DP:   0.06382\n",
      "\n",
      "Error GT to PINN (top) , GT to DiffPhys (bottom):\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "err_pi = np.sum( np.abs(sol_pi-sol_gt)) / (STEPS*N)\n",
    "err_dp = np.sum( np.abs(sol_dp-sol_gt)) / (STEPS*N)\n",
    "print(\"MAE PINN: {:7.5f} \\nMAE DP:   {:7.5f}\".format(err_pi,err_dp))\n",
    "\n",
    "print(\"\\nError GT to PINN (top) , GT to DiffPhys (bottom):\")\n",
    "show_state(np.reshape( np.concatenate([sol_pi-sol_gt, divider, sol_dp-sol_gt],axis=0) ,[N*2+10,33,1]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "4_zwf8mkZKnj"
   },
   "source": [
    "That's a pretty clear result: the PINN error is more than 3 times larger than the one from the Differentiable Physics (DP) reconstruction.\n",
    "\n",
    "This difference also shows clearly in the jointly visualized image at the bottom: the magnitudes of the errors of the DP reconstruction are much closer to zero, as indicated by the purple color above.\n",
    "\n",
    "A simple direct reconstruction problem like this one is always a good initial test for a DP solver. It can be tested independently before moving on to more complex setups, e.g., coupling it with an NN. If the direct optimization does not converge, there's probably still something fundamentally wrong, and there's no point involving an NN. \n",
    "\n",
    "Now we have a first example to show similarities and differences of the two approaches. In the next section, we'll present a discussion of the findings so far, before moving to more complex cases in the following chapter.\n",
    "\n",
    "\n",
    "## Next steps\n",
    "\n",
    "As before, there's variety of things that can be improved and experimented with using the code above:\n",
    "\n",
    "* You can try to adjust the training parameters to further improve the reconstruction.\n",
    "* Activate a different optimizer, and observe the changing (not necessarily improved) convergence behavior.\n",
    "* Vary the number of steps, or the resolution of the simulation and reconstruction.\n",
    "* Try adding `@jit_compile` in a line before `loss_function`. This will incude a one-time compilation cost, but greatly speed up the optimization. \n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
